SlideShare a Scribd company logo
1 of 48
Download to read offline
DjangoとWeb2pyを
               apacheに組込む
                 Python東海 第21回 勉強会
                      2013/2/23

                      坪内 由孝




13年2月24日日曜日                          1
自己紹介
              •   坪内 由孝
                  仕事はインフラエンジニア?
                  最近は仮想化とかよくやってます。
                  プログラム?おいしいの?

              •   連絡先的な
                  blog : http://www.zumwalt.info/blog
                  Twitter : a_wilhelm



13年2月24日日曜日                                             2
アジェンダ
                             7. Django
         1. 注意事項                - インストール
                              - DB作成
         2. 前提条件・環境
                              - Project 作成・設定
                              - apache 設定
         3. DjangoとWeb2py

                             8. Web2py
         4. Pythonインストール        - インストール
                              - apache・SSL 設定
         5. mod_wsgiインストール
                              - DB設定
         6. MySQLインストール
                             9. まとめ
13年2月24日日曜日                                     3
1. 注意事項



13年2月24日日曜日             4
1. 注意事項
              •   DjangoとかWeb2pyがどういった物かというのは
                  一切無いので期待しないでください。

              •   セキュリティがかなり甘いです。
                  →本番環境で使うとやばいです。

              •   パフォーマンスとか気にしてないです。
                  →やっぱ本番環境で使うとまずいです。

                  ※自己責任で参考にしてください。


13年2月24日日曜日                                     5
2. 前提条件・環境



13年2月24日日曜日                6
2. 前提条件・環境
              •   OS : CentOS 6.3
                  selinux : 無効
                  iptables : 無効
                  作業は全て root にて実施

              •   Python 2.7.3 3系は西暦3000年くらいになったら考えます。

              •   apache と mod_wsgi とMySQLを利用

              •   Django と Web2py は別サーバーで構築
                   Pythonインストール∼Apacheインストールまでは同じ手順

              •   Web2pyは mod_ssl も利用(adminページ用)



13年2月24日日曜日                                              7
3. DjangoとWeb2py



13年2月24日日曜日                      8
3. DjangoとWeb2py
              •   どっちもWebフレームワーク

              •   どっちが使いやすいとか聞かれても正直わか
                  らん('A`)

              •   どっちも日本ユーザー会があるのでそちらを
                  頼るほうが正しい答えが得られるよ!

              •   更に言えば使い方もようわからん('A`)


13年2月24日日曜日                              9
4. Python



13年2月24日日曜日               10
4. Pythonインストール 1
         前回の復讐復習です。
         # yum install gcc make libjpeg-devel ¥
         > zlib-develpenssl-devel zlib tk-devel ¥
         > tcl-devel sqlite-devel ncurses-devel ¥
         > gdbm-devel readline-devel bzip2-devel
         > db4-devel




13年2月24日日曜日                                         11
4. Pythonインストール 2
         # mkdir /usr/local/src/python
         # cd /usr/local/src/python
         # wget http://www.python.org/ftp/python/2.7.3/
         Python-2.7.3.tar.bz2
         # tar xvjf Python-2.7.3.tar.bz2
         # cd Python-2.7.3




13年2月24日日曜日                                               12
4. Pythonインストール 3
         ※前回なかった手順 urllib2利用の為に必要

         # diff -u /usr/local/src/python/Python-2.7.3/Modules/Setup.dist{.orig,}
         --- /usr/local/src/python/Python-2.7.3/Modules/Setup.dist.orig	

         +++ /usr/local/src/python/Python-2.7.3/Modules/Setup.dist
         @@ -207,14 +207,14 @@
         -#_socket socketmodule.c
         +_socket socketmodule.c

         -#_ssl _ssl.c 
         -#	

 -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl 
         -#	

 -L$(SSL)/lib -lssl -lcrypto
         +_ssl _ssl.c 
         +	

 -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl 
         +	

 -L$(SSL)/lib -lssl -lcrypto




13年2月24日日曜日                                                                        13
4. Pythonインストール 4
         # ./configure CFLAGS=-fPIC --enable-shared --enable-unicode=ucs4
         # make
         # make install
         # cat /etc/ld.so.conf.d/python2.7.conf
         /usr/local/lib
         # ldconfig

         # python -V
         Python 2.7.3
         configure オプションの説明

              •   CFLAGS=-fPIC : gccのオプション。
                  共有ライブラリはPICにしたほうが動作が早いらしい。

              •   --enable-shared : 付けないとmod_wsgi入れる時にトラブルよ!
                  (mod_wsgi インストールする環境のPythonには必須)

              •   --enable-unicode=ucs4 : WindowsAPIとかJAVAとか.Netの文字列とやりと
                  りするなら ucs2。
                   Linx系単独ならucs4 (FedoraとかUbuntuはucs4)
13年2月24日日曜日                                                                14
4. Pythonインストール 5
          easy_install インストール
          # mkdir /usr/local/src/python/easy_install
          # cd /usr/local/src/python/easy_install
          # wget http://peak.telecommunity.com/dist/
          ez_setup.py
          # python ez_setup.py

          pip インストール
          # easy_install pip



13年2月24日日曜日                                            15
5. mod_wsgi



13年2月24日日曜日                 16
5. mod_wsgi インストール 1
         # yum install httpd-devel
         # mkdir /usr/local/src/modwsgi
         # cd /usr/local/src/modwsgi
         # wget http://modwsgi.googlecode.com/files/
         mod_wsgi-3.4.tar.gz
         # tar zxvf mod_wsgi-3.3.tar.gz




13年2月24日日曜日                                           17
5. mod_wsgi インストール 2
 # cd mod_wsgi-3.4
 # which python
 /usr/local/bin/python
 # ./configure CFLAGS=-fPIC --with-python=/usr/local/bin/python
 # make
 # make install
 「which python」 の結果とconfigureオプションの
 「--with-python=」のパラメーターを合わせます。



13年2月24日日曜日                                                      18
6. MySQL



13年2月24日日曜日              19
6. MySQLインストール 1
          # yum install mysql-devel mysql-server
          # diff -u /etc/my.cnf{.orig,}
          --- /etc/my.cnf.orig	

          +++ /etc/my.cnf
          @@ -1,10 +1,17 @@
           [mysqld]
          +character-set-server=utf8

          +default-storage-engine = InnoDB
          +innodb_buffer_pool_size = 1024M
          +innodb_data_file_path = ibdata1:256M:autoextend
          +innodb_file_per_table
          +innodb_data_home_dir = /var/lib/mysql/datahome




  MySQLはinnodb使ったほうが幸せになれます。


13年2月24日日曜日                                                 20
6. MySQLインストール 2
      # mkdir /var/lib/mysql/datahome
      # /etc/init.d/mysqld start
      # chkconfig mysqld on
      # mysql_secure_installation
      MySQLのrootパスワード設定して後は全部YesでOK



  my.ncf 編集後にMySQLを起動した方が幸せになれます。
  MySQL のセキュリティ設定は mysql_secure_installation を
  使うと幸せになれます。
13年2月24日日曜日                                      21
ここまではDjango、
              Web2py共通の設定


13年2月24日日曜日                  22
7. Django



13年2月24日日曜日               23
7. Django インストール
   # pip install MySQL_Python
   # mkdir /usr/local/src/django
   # cd /usr/local/src/django
   # wget https://www.djangoproject.com/download/1.4.3/tarball/
   # tar zxvf Django-1.4.3.tar.gz
   # cd Django-1.4.3
   # python setup.py install
   確認
   # python
   >>> import django
   >>> django.VERSION
   (1, 4, 3, 'final', 0)
  MySQL_PythonはDjangoでMySQLを使う場合必須です。
13年2月24日日曜日                                                       24
7. Django DB設定
    DB作成
  # mysql -u root -p
  Enter password: mysqlのrootパスワード
  mysql> create database djangotest;
  mysql> grant all on djangotest.* TO djangotestadmin@localhost
  identified BY 'djangopass';
  mysql> quit

  mysqlのrootパスワードは「6.MySQL」で設定したのです。
  ユーザー名・パスワードは適宜変更してください。
  DBはDjangoのProject毎に必要です。

13年2月24日日曜日                                                       25
7. Django Project作成
  # mkdir /var/www/django
  # chown apache:apache -R /var/www/django
  # cd /var/www/django
  # django-admin.py startproject djangotest
  ・新規Projectの作り方
     django-admin.py startproject [プロジェクト名]


  昔のVerとはProjectの設定ファイル保存場所が変更されてる
  ので注意。
  今回の設定ファイル保存場所
   /var/www/django/djangotest/djangotest

13年2月24日日曜日                                   26
7. Django Project設定 1
  DBの指定
  # diff -u /var/www/django/djangotest/djangotest/settings.py{.orig,}
  --- /var/www/django/djangotest/djangotest/settings.py.orig	

  +++ /var/www/django/djangotest/djangotest/settings.py	

  @@ -11,10 +11,10 @@

  -      'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
  -      'NAME': '',              # Or path to database file if using sqlite3.
  -      'USER': '',             # Not used with sqlite3.
  -      'PASSWORD': '',             # Not used with sqlite3.
  +       'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or
  'oracle'.
  +       'NAME': 'djangotest',              # Or path to database file if using sqlite3.
  +       'USER': 'djangotestadmin',              # Not used with sqlite3.
  +       'PASSWORD': 'djangopass',              # Not used with sqlite3.
         'HOST': '',              # Set to empty string for localhost. Not used with sqlite3.
         'PORT': '',             # Set to empty string for default. Not used with sqlite3.
      }

  ENGINE の指定の仕方に注意。
13年2月24日日曜日                                                                                              27
7. Django Project設定 2
  言語とタイムゾーン設定
   # diff -u /var/www/django/djangotest/djangotest/settings.py{.orig,}
   --- /var/www/django/djangotest/djangotest/settings.py.orig	

   +++ /var/www/django/djangotest/djangotest/settings.py	

   @@ -24,11 +24,11 @@
   -TIME_ZONE = 'America/Chicago'
   +TIME_ZONE = 'Asia/Tokyo'

   -LANGUAGE_CODE = 'en-us'
   +LANGUAGE_CODE = 'ja'


  設定変更を忘れると痛い目を見るので忘れずに修正する。
13年2月24日日曜日                                                              28
7. Django Project設定 3
  adminページ設定 1
   # diff -u /var/www/django/djangotest/djangotest/settings.py{.orig,}
   --- /var/www/django/djangotest/djangotest/settings.py.orig	

   +++ /var/www/django/djangotest/djangotest/settings.py	

   @@ -116,9 +116,9 @@
    - # 'django.contrib.admin',
   + 'django.contrib.admin',

   - # 'django.contrib.admindocs',
   + 'django.contrib.admindocs',


  不要であれば無効のままでもOK

13年2月24日日曜日                                                              29
7. Django Project設定 4
  adminページ設定 2
 # diff -u /var/www/django/djangotest/djangotest/urls.py{.orig,}
 --- /var/www/django/djangotest/djangotest/urls.py.orig	

 +++ /var/www/django/djangotest/djangotest/urls.py
 @@ -1,8 +1,8 @@
 -# from django.contrib import admin
 -# admin.autodiscover()
 +from django.contrib import admin
 +admin.autodiscover()

 @@ -10,8 +10,8 @@
 - # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
 + url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

 - # url(r'^admin/', include(admin.site.urls)),
 + url(r'^admin/', include(admin.site.urls)),


 不要であれば無効のままでもOK
13年2月24日日曜日                                                           30
7. Django Project設定 5
  DB設定の適用
 # cd /var/www/django/djangotest
 # python manage.py syncdb
 <出力省略>
 You just installed Django's auth system, which means you don't have any superusers defined.
 Would you like to create one now? (yes/no): yes
 Username (leave blank to use 'root'):
 E-mail address: 適当なメールアドレス
 Password: Djangoのrootパスワード
 Password (again): 同上
 Superuser created successfully.
 <出力省略>

 メールアドレスは必須項目のため省略不可です。


13年2月24日日曜日                                                                                   31
7. Django Project設定 6
  wsgi ファイル作成
 # cd /var/www/django/djangotest/djangotest

 # cat djangotest.wsgi
 import os, sys
 sys.path.append('/var/www/django/djangotest')
 os.environ['DJANGO_SETTINGS_MODULE'] = 'djangotest.settings'
 os.environ['PYTHON_EGG_CACHE'] = '/var/www/.python-eggs'

 import django.core.handlers.wsgi

 application = django.core.handlers.wsgi.WSGIHandler()

 project毎に作成してください。
 sys.path.appendのパスもProject毎に変更が必要です。


13年2月24日日曜日                                                     32
7. Django apache設定
 # cat /etc/httpd/conf.d/django.conf
 <VirtualHost *:80>
    LoadModule wsgi_module modules/mod_wsgi.so
    ServerName preble.zumwalt.info
   Alias /static/admin /usr/local/lib/python2.7/site-packages/django/contrib/admin/static/admin

   WSGIScriptAlias /djangotest /var/www/django/djangotest/djangotest/djangotest.wsgi

 </VirtualHost>

 # /etc/init.d/httpd start
 # chkconfig httpd on



 project毎に WSGIScriptAlias を追記してください。
 Servername は適宜変更してください。


13年2月24日日曜日                                                                                       33
8. Django 諸々
 アプリケーション作成
 # cd /var/www/django/djangotest
 # python manage.py startapp testapp01

・新規アプリケーションの作り方
  アプリケーションを作成するProjectのフォルダ内で
  python manage.py startapp [アプリケーション名]
 adominページへのアクセス
   http://[ホスト名orIP]/[Project名]/admin/
 ドキュメント(英語)
  https://docs.djangoproject.com/en/1.4/
13年2月24日日曜日                                34
8. Web2py



13年2月24日日曜日               35
8. Web2py インストール
    # mkdir /usr/local/src/web2py
    # cd /usr/local/src/web2py/
    # wget http://www.web2py.com/examples/static/web2py_src.zip
    # unzip web2py_src.zip
    # cp -Rp web2py /var/www/.
    # chown -R apache:apache /var/www/web2py


    FedoraとかUbuntu用の設定スクリプトがありますが、
    利用しようと思うとかなりの手直しが必要です。
    インストールマニュアル変わりに程度にしたほうが…

13年2月24日日曜日                                                       36
8. Web2py SSL設定
# yum install mod_ssl
# mkdir /etc/httpd/ssl
# openssl genrsa 2048 > /etc/httpd/ssl/oreore.key
# openssl req -new -x509 -nodes -sha1 -days 3650 -key /etc/httpd/ssl/oreore.key > /etc/httpd/ssl/
oreore.cert
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Gifu
Locality Name (eg, city) [Default City]:hoge
Organization Name (eg, company) [Default Company Ltd]:hoge
Organizational Unit Name (eg, section) []:huga
Common Name (eg, your name or your server's hostname) []:hoge.huga.jp
Email Address []:

# openssl x509 -noout -fingerprint -text < /etc/httpd/ssl/oreore.cert > /etc/httpd/ssl/oreore.cer
# chmod 400 /etc/httpd/ssl/oreore.*


 長は2048bitが最近の主流です。
有効期限とか検証なので10年、その他入力項目は適当に。
どうせオレオレ証明書ですし。
13年2月24日日曜日                                                                                         37
8. Web2py apache設定 1
 # cat web2py.conf
 NameVirtualHost *:80
 NameVirtualHost *:443

 LoadModule wsgi_module modules/mod_wsgi.so
 LoadModule ssl_module modules/mod_ssl.so

 Listen 443
 SSLPassPhraseDialog builtin
 SSLSessionCache       shmcb:/var/cache/mod_ssl/scache(512000)
 SSLSessionCacheTimeout 300
 SSLMutex default
 SSLRandomSeed startup file:/dev/urandom 256
 SSLRandomSeed connect builtin
 SSLCryptoDevice builtin

 WSGISocketPrefix run/wsgi
 <続く>

 ssl.conf を標準で使うと面倒なのでweb2py側に移植。
13年2月24日日曜日                                                      38
<続き>
         8. Web2py apache設定 2
 <VirtualHost *:80>
  WSGIDaemonProcess web2py user=apache group=apache display-name=%{GROUP}
  WSGIProcessGroup web2py
  WSGIScriptAlias / /var/www/web2py/wsgihandler.py
  <Directory /var/www/web2py/>
   AllowOverride None
   Order Allow,Deny
   Deny from all
   <Files wsgihandler.py>
     Allow from all
   </Files>
  </Directory>
  AliasMatch ^/([^/]+)/static/(.*) /var/www/web2py/applications/$1/static/$2
  <Directory /var/www/web2py/applications/*/static/>
   Options -Indexes
   Order Allow,Deny
   Allow from all
  </Directory>
  <Location /admin>
   Deny from all
  </Location>
  <LocationMatch ^/([^/]+)/appadmin>
   Deny from all
  </LocationMatch>
  CustomLog /var/log/httpd/w2p_access_log common
  ErrorLog /var/log/httpd/w2p_error_log
 </VirtualHost>
 <続く>
13年2月24日日曜日                                                                    39
8. Web2py apache設定 3
 <続き>
 <VirtualHost *:443>
  ServerName pinckney.zumwalt.info
  DocumentRoot "/var/www/web2py"
  SSLEngine on
  SSLCertificateFile /etc/httpd/ssl/oreore.cert
  SSLCertificateKeyFile /etc/httpd/ssl/oreore.key
  WSGIProcessGroup web2py
  WSGIScriptAlias / /var/www/web2py/wsgihandler.py
  <Directory /var/www/web2py>
   AllowOverride None
   Order Allow,Deny
   Deny from all
   <Files wsgihandler.py>
     Allow from all
   </Files>
  </Directory>
  AliasMatch ^/([^/]+)/static/(.*) /var/www/web2py/applications/$1/static/$2
  <Directory /var/www/web2py/applications/*/static/>
   Order Allow,Deny
   Allow from all
  </Directory>
  CustomLog /var/log/httpd/sw2p_access_log common
  ErrorLog /var/log/httpd/sw2p_error_log
 </VirtualHost>

 adminページへのアクセスはhttpsにしないと動かない。
13年2月24日日曜日                                                                    40
8. Web2py apache設定 4
 デフォルト設定の無効化
 # cd /etc/httpd/conf.d/
 # mv welcome.conf welcome.conf.disable
 # mv ssl.conf ssl.conf.disable

 admin パスワード設定
 # cd /var/www/web2py
 # sudo -u apache python -c "from gluon.main import save_password; save_password(raw_input('admin password: '),443)"
 admin password: [adminページのパスワード]



 apache起動
 # /etc/init.d/httpd start
 # chkconfig httpd on
 起動に失敗したらログと睨めっこしましょう♪
 この資料書くのに3時間くらいは睨めっこしました
13年2月24日日曜日                                                                                                            41
8. Web2py DB設定 1
    DB作成
    # mysql -u root -p
    Enter password: mysqlのrootパスワード
    mysql> create database web2py;
    mysql> grant all on web2py.* TO web2pyadmin@localhost
    identified BY 'web2pypass';
    mysql> quit

    mysqlのrootパスワードは「6.MySQL」で設定したのです。
    ユーザー名・パスワードは適宜変更してください。
    DBはWeb2pyのアプリケーション毎に必要です。
13年2月24日日曜日                                                 42
8. Web2py DB設定 2
 DB設定
 # diff -u /var/www/web2py/applications/welcome/models/db.py{.orig,}
 --- /var/www/web2py/applications/welcome/models/db.py.orig	

 +++ /var/www/web2py/applications/welcome/models/db.py
 @@ -11,7 +11,8 @@

 - db = DAL('sqlite://storage.sqlite',pool_size=1,check_reserved=['all'])
 + ## db = DAL('sqlite://storage.sqlite',pool_size=1,check_reserved=['all'])
 + db = DAL('mysql://web2pyadmin:web2pypass@localhost/web2py')



 DALの記載
 mysql://ユーザ名:パスワード@localhost/データベース名



13年2月24日日曜日                                                                    43
8. Web2py 諸々
 デフォルトページ
      http://[ホスト名orIP]/welcome


 adminページ
      https://[ホスト名orIP]/admin


 日本語ドキュメント
  http://web2py.com/books/default/chapter/31

13年2月24日日曜日                                    44
9. まとめ



13年2月24日日曜日            45
9. まとめ
              •   初心者はApacheとかに組込まずに開発用サーバー使
                  いましょう。   は   屋。


              •   Python勉強会の資料…?


              •   Djnago、Web2py共にアップデートで手順は変わって
                  いきます。過去の手順は参考程度に。


              •   nginx と uWSGI の組合せだともうちょっと簡単らい
                  いです。ただあまり融通が効かないとも。


13年2月24日日曜日                                        46
10. 質問とか



13年2月24日日曜日              47
おまけ



13年2月24日日曜日         48

More Related Content

What's hot

Project Jigsaw #kanjava
Project Jigsaw #kanjavaProject Jigsaw #kanjava
Project Jigsaw #kanjavaYuji Kubota
 
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発するHiroyuki Kusu
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjugYuji Kubota
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときRyunosuke SATO
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Nobuhiro Nakashima
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
NodeにしましょうYuzo Hebishima
 
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみたYoshiki Shibukawa
 
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ    uv4l-webrtc 軽くハックしてみたよ!ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ    uv4l-webrtc 軽くハックしてみたよ!
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!Kensaku Komatsu
 
Rancher で Docker 利用!
Rancher で Docker 利用!Rancher で Docker 利用!
Rancher で Docker 利用!Tetsurou Yano
 
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7Wataru NOGUCHI
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botdcubeio
 
ドキュメントを加速する作画ツール Blockdiag 2011/07 #infotalk
ドキュメントを加速する作画ツール Blockdiag 2011/07 #infotalkドキュメントを加速する作画ツール Blockdiag 2011/07 #infotalk
ドキュメントを加速する作画ツール Blockdiag 2011/07 #infotalkTakeshi Komiya
 
OSC2017Hokkaido
OSC2017HokkaidoOSC2017Hokkaido
OSC2017Hokkaidoslankdev
 
GitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registryGitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registryTetsurou Yano
 
Ruby on cygwin (2019/8月号)
Ruby on cygwin (2019/8月号)Ruby on cygwin (2019/8月号)
Ruby on cygwin (2019/8月号)fd0
 
MediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live StreamingMediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live Streamingmganeko
 
Metahub for github
Metahub for githubMetahub for github
Metahub for githubSuguru Oho
 
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3mganeko
 

What's hot (20)

Project Jigsaw #kanjava
Project Jigsaw #kanjavaProject Jigsaw #kanjava
Project Jigsaw #kanjava
 
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
 
Hello, Node.js
Hello, Node.jsHello, Node.js
Hello, Node.js
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた
 
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ    uv4l-webrtc 軽くハックしてみたよ!ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ    uv4l-webrtc 軽くハックしてみたよ!
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
 
Rancher で Docker 利用!
Rancher で Docker 利用!Rancher で Docker 利用!
Rancher で Docker 利用!
 
Docker meetup tokyo_public_r001
Docker meetup tokyo_public_r001Docker meetup tokyo_public_r001
Docker meetup tokyo_public_r001
 
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 
ドキュメントを加速する作画ツール Blockdiag 2011/07 #infotalk
ドキュメントを加速する作画ツール Blockdiag 2011/07 #infotalkドキュメントを加速する作画ツール Blockdiag 2011/07 #infotalk
ドキュメントを加速する作画ツール Blockdiag 2011/07 #infotalk
 
OSC2017Hokkaido
OSC2017HokkaidoOSC2017Hokkaido
OSC2017Hokkaido
 
GitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registryGitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registry
 
Ruby on cygwin (2019/8月号)
Ruby on cygwin (2019/8月号)Ruby on cygwin (2019/8月号)
Ruby on cygwin (2019/8月号)
 
MediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live StreamingMediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live Streaming
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
 

Similar to Djangoとweb2pyをapacheに組込む

Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集Wataru NOGUCHI
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Yasuyuki Sugai
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側Yasumasa Suenaga
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイKazuhiro Hara
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾外道 父
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstepsmokey monkey
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較真治 米田
 
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 LinuxNVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 LinuxTomoki SHISHIKURA
 
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」aitc_jp
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみたKazuya Wada
 
Windows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみたWindows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみたHikari Morita
 

Similar to Djangoとweb2pyをapacheに組込む (20)

Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側
 
Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
 
Osc2013 tokyospring
Osc2013 tokyospringOsc2013 tokyospring
Osc2013 tokyospring
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstep
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
 
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 LinuxNVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 Linux
 
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみた
 
Windows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみたWindows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみた
 

More from 2bo 2bo

PyScriptの紹介
PyScriptの紹介PyScriptの紹介
PyScriptの紹介2bo 2bo
 
結婚式のエンドロールを「Pythonで」当日作った話
結婚式のエンドロールを「Pythonで」当日作った話結婚式のエンドロールを「Pythonで」当日作った話
結婚式のエンドロールを「Pythonで」当日作った話2bo 2bo
 
あひる焼きの歴史 ver0.1
あひる焼きの歴史 ver0.1あひる焼きの歴史 ver0.1
あひる焼きの歴史 ver0.12bo 2bo
 
Pyenvで幸せになろう.py
Pyenvで幸せになろう.pyPyenvで幸せになろう.py
Pyenvで幸せになろう.py2bo 2bo
 
Python東海の紹介.py
Python東海の紹介.pyPython東海の紹介.py
Python東海の紹介.py2bo 2bo
 
Pythonでzabbix apiを使ってみる
Pythonでzabbix apiを使ってみるPythonでzabbix apiを使ってみる
Pythonでzabbix apiを使ってみる2bo 2bo
 
自宅仮想マシンをConohaに移行してみた
自宅仮想マシンをConohaに移行してみた自宅仮想マシンをConohaに移行してみた
自宅仮想マシンをConohaに移行してみた2bo 2bo
 
Pillowの使い方
Pillowの使い方Pillowの使い方
Pillowの使い方2bo 2bo
 
PEP8を読んでみよう
PEP8を読んでみようPEP8を読んでみよう
PEP8を読んでみよう2bo 2bo
 
Raspberry p ionzabbixproxy
Raspberry p ionzabbixproxyRaspberry p ionzabbixproxy
Raspberry p ionzabbixproxy2bo 2bo
 
Raspberry piの紹介
Raspberry piの紹介Raspberry piの紹介
Raspberry piの紹介2bo 2bo
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう2bo 2bo
 

More from 2bo 2bo (12)

PyScriptの紹介
PyScriptの紹介PyScriptの紹介
PyScriptの紹介
 
結婚式のエンドロールを「Pythonで」当日作った話
結婚式のエンドロールを「Pythonで」当日作った話結婚式のエンドロールを「Pythonで」当日作った話
結婚式のエンドロールを「Pythonで」当日作った話
 
あひる焼きの歴史 ver0.1
あひる焼きの歴史 ver0.1あひる焼きの歴史 ver0.1
あひる焼きの歴史 ver0.1
 
Pyenvで幸せになろう.py
Pyenvで幸せになろう.pyPyenvで幸せになろう.py
Pyenvで幸せになろう.py
 
Python東海の紹介.py
Python東海の紹介.pyPython東海の紹介.py
Python東海の紹介.py
 
Pythonでzabbix apiを使ってみる
Pythonでzabbix apiを使ってみるPythonでzabbix apiを使ってみる
Pythonでzabbix apiを使ってみる
 
自宅仮想マシンをConohaに移行してみた
自宅仮想マシンをConohaに移行してみた自宅仮想マシンをConohaに移行してみた
自宅仮想マシンをConohaに移行してみた
 
Pillowの使い方
Pillowの使い方Pillowの使い方
Pillowの使い方
 
PEP8を読んでみよう
PEP8を読んでみようPEP8を読んでみよう
PEP8を読んでみよう
 
Raspberry p ionzabbixproxy
Raspberry p ionzabbixproxyRaspberry p ionzabbixproxy
Raspberry p ionzabbixproxy
 
Raspberry piの紹介
Raspberry piの紹介Raspberry piの紹介
Raspberry piの紹介
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Recently uploaded (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

Djangoとweb2pyをapacheに組込む

  • 1. DjangoとWeb2pyを apacheに組込む Python東海 第21回 勉強会 2013/2/23 坪内 由孝 13年2月24日日曜日 1
  • 2. 自己紹介 • 坪内 由孝 仕事はインフラエンジニア? 最近は仮想化とかよくやってます。 プログラム?おいしいの? • 連絡先的な blog : http://www.zumwalt.info/blog Twitter : a_wilhelm 13年2月24日日曜日 2
  • 3. アジェンダ 7. Django 1. 注意事項 - インストール - DB作成 2. 前提条件・環境 - Project 作成・設定 - apache 設定 3. DjangoとWeb2py 8. Web2py 4. Pythonインストール - インストール - apache・SSL 設定 5. mod_wsgiインストール - DB設定 6. MySQLインストール 9. まとめ 13年2月24日日曜日 3
  • 5. 1. 注意事項 • DjangoとかWeb2pyがどういった物かというのは 一切無いので期待しないでください。 • セキュリティがかなり甘いです。 →本番環境で使うとやばいです。 • パフォーマンスとか気にしてないです。 →やっぱ本番環境で使うとまずいです。 ※自己責任で参考にしてください。 13年2月24日日曜日 5
  • 7. 2. 前提条件・環境 • OS : CentOS 6.3 selinux : 無効 iptables : 無効 作業は全て root にて実施 • Python 2.7.3 3系は西暦3000年くらいになったら考えます。 • apache と mod_wsgi とMySQLを利用 • Django と Web2py は別サーバーで構築 Pythonインストール∼Apacheインストールまでは同じ手順 • Web2pyは mod_ssl も利用(adminページ用) 13年2月24日日曜日 7
  • 9. 3. DjangoとWeb2py • どっちもWebフレームワーク • どっちが使いやすいとか聞かれても正直わか らん('A`) • どっちも日本ユーザー会があるのでそちらを 頼るほうが正しい答えが得られるよ! • 更に言えば使い方もようわからん('A`) 13年2月24日日曜日 9
  • 11. 4. Pythonインストール 1 前回の復讐復習です。 # yum install gcc make libjpeg-devel ¥ > zlib-develpenssl-devel zlib tk-devel ¥ > tcl-devel sqlite-devel ncurses-devel ¥ > gdbm-devel readline-devel bzip2-devel > db4-devel 13年2月24日日曜日 11
  • 12. 4. Pythonインストール 2 # mkdir /usr/local/src/python # cd /usr/local/src/python # wget http://www.python.org/ftp/python/2.7.3/ Python-2.7.3.tar.bz2 # tar xvjf Python-2.7.3.tar.bz2 # cd Python-2.7.3 13年2月24日日曜日 12
  • 13. 4. Pythonインストール 3 ※前回なかった手順 urllib2利用の為に必要 # diff -u /usr/local/src/python/Python-2.7.3/Modules/Setup.dist{.orig,} --- /usr/local/src/python/Python-2.7.3/Modules/Setup.dist.orig +++ /usr/local/src/python/Python-2.7.3/Modules/Setup.dist @@ -207,14 +207,14 @@ -#_socket socketmodule.c +_socket socketmodule.c -#_ssl _ssl.c -# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl -# -L$(SSL)/lib -lssl -lcrypto +_ssl _ssl.c + -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl + -L$(SSL)/lib -lssl -lcrypto 13年2月24日日曜日 13
  • 14. 4. Pythonインストール 4 # ./configure CFLAGS=-fPIC --enable-shared --enable-unicode=ucs4 # make # make install # cat /etc/ld.so.conf.d/python2.7.conf /usr/local/lib # ldconfig # python -V Python 2.7.3 configure オプションの説明 • CFLAGS=-fPIC : gccのオプション。 共有ライブラリはPICにしたほうが動作が早いらしい。 • --enable-shared : 付けないとmod_wsgi入れる時にトラブルよ! (mod_wsgi インストールする環境のPythonには必須) • --enable-unicode=ucs4 : WindowsAPIとかJAVAとか.Netの文字列とやりと りするなら ucs2。 Linx系単独ならucs4 (FedoraとかUbuntuはucs4) 13年2月24日日曜日 14
  • 15. 4. Pythonインストール 5 easy_install インストール # mkdir /usr/local/src/python/easy_install # cd /usr/local/src/python/easy_install # wget http://peak.telecommunity.com/dist/ ez_setup.py # python ez_setup.py pip インストール # easy_install pip 13年2月24日日曜日 15
  • 17. 5. mod_wsgi インストール 1 # yum install httpd-devel # mkdir /usr/local/src/modwsgi # cd /usr/local/src/modwsgi # wget http://modwsgi.googlecode.com/files/ mod_wsgi-3.4.tar.gz # tar zxvf mod_wsgi-3.3.tar.gz 13年2月24日日曜日 17
  • 18. 5. mod_wsgi インストール 2 # cd mod_wsgi-3.4 # which python /usr/local/bin/python # ./configure CFLAGS=-fPIC --with-python=/usr/local/bin/python # make # make install 「which python」 の結果とconfigureオプションの 「--with-python=」のパラメーターを合わせます。 13年2月24日日曜日 18
  • 20. 6. MySQLインストール 1 # yum install mysql-devel mysql-server # diff -u /etc/my.cnf{.orig,} --- /etc/my.cnf.orig +++ /etc/my.cnf @@ -1,10 +1,17 @@ [mysqld] +character-set-server=utf8 +default-storage-engine = InnoDB +innodb_buffer_pool_size = 1024M +innodb_data_file_path = ibdata1:256M:autoextend +innodb_file_per_table +innodb_data_home_dir = /var/lib/mysql/datahome MySQLはinnodb使ったほうが幸せになれます。 13年2月24日日曜日 20
  • 21. 6. MySQLインストール 2 # mkdir /var/lib/mysql/datahome # /etc/init.d/mysqld start # chkconfig mysqld on # mysql_secure_installation MySQLのrootパスワード設定して後は全部YesでOK my.ncf 編集後にMySQLを起動した方が幸せになれます。 MySQL のセキュリティ設定は mysql_secure_installation を 使うと幸せになれます。 13年2月24日日曜日 21
  • 22. ここまではDjango、 Web2py共通の設定 13年2月24日日曜日 22
  • 24. 7. Django インストール # pip install MySQL_Python # mkdir /usr/local/src/django # cd /usr/local/src/django # wget https://www.djangoproject.com/download/1.4.3/tarball/ # tar zxvf Django-1.4.3.tar.gz # cd Django-1.4.3 # python setup.py install 確認 # python >>> import django >>> django.VERSION (1, 4, 3, 'final', 0) MySQL_PythonはDjangoでMySQLを使う場合必須です。 13年2月24日日曜日 24
  • 25. 7. Django DB設定 DB作成 # mysql -u root -p Enter password: mysqlのrootパスワード mysql> create database djangotest; mysql> grant all on djangotest.* TO djangotestadmin@localhost identified BY 'djangopass'; mysql> quit mysqlのrootパスワードは「6.MySQL」で設定したのです。 ユーザー名・パスワードは適宜変更してください。 DBはDjangoのProject毎に必要です。 13年2月24日日曜日 25
  • 26. 7. Django Project作成 # mkdir /var/www/django # chown apache:apache -R /var/www/django # cd /var/www/django # django-admin.py startproject djangotest ・新規Projectの作り方 django-admin.py startproject [プロジェクト名] 昔のVerとはProjectの設定ファイル保存場所が変更されてる ので注意。 今回の設定ファイル保存場所 /var/www/django/djangotest/djangotest 13年2月24日日曜日 26
  • 27. 7. Django Project設定 1 DBの指定 # diff -u /var/www/django/djangotest/djangotest/settings.py{.orig,} --- /var/www/django/djangotest/djangotest/settings.py.orig +++ /var/www/django/djangotest/djangotest/settings.py @@ -11,10 +11,10 @@ - 'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': '', # Or path to database file if using sqlite3. - 'USER': '', # Not used with sqlite3. - 'PASSWORD': '', # Not used with sqlite3. + 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': 'djangotest', # Or path to database file if using sqlite3. + 'USER': 'djangotestadmin', # Not used with sqlite3. + 'PASSWORD': 'djangopass', # Not used with sqlite3. 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '', # Set to empty string for default. Not used with sqlite3. } ENGINE の指定の仕方に注意。 13年2月24日日曜日 27
  • 28. 7. Django Project設定 2 言語とタイムゾーン設定 # diff -u /var/www/django/djangotest/djangotest/settings.py{.orig,} --- /var/www/django/djangotest/djangotest/settings.py.orig +++ /var/www/django/djangotest/djangotest/settings.py @@ -24,11 +24,11 @@ -TIME_ZONE = 'America/Chicago' +TIME_ZONE = 'Asia/Tokyo' -LANGUAGE_CODE = 'en-us' +LANGUAGE_CODE = 'ja' 設定変更を忘れると痛い目を見るので忘れずに修正する。 13年2月24日日曜日 28
  • 29. 7. Django Project設定 3 adminページ設定 1 # diff -u /var/www/django/djangotest/djangotest/settings.py{.orig,} --- /var/www/django/djangotest/djangotest/settings.py.orig +++ /var/www/django/djangotest/djangotest/settings.py @@ -116,9 +116,9 @@ - # 'django.contrib.admin', + 'django.contrib.admin', - # 'django.contrib.admindocs', + 'django.contrib.admindocs', 不要であれば無効のままでもOK 13年2月24日日曜日 29
  • 30. 7. Django Project設定 4 adminページ設定 2 # diff -u /var/www/django/djangotest/djangotest/urls.py{.orig,} --- /var/www/django/djangotest/djangotest/urls.py.orig +++ /var/www/django/djangotest/djangotest/urls.py @@ -1,8 +1,8 @@ -# from django.contrib import admin -# admin.autodiscover() +from django.contrib import admin +admin.autodiscover() @@ -10,8 +10,8 @@ - # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), + url(r'^admin/doc/', include('django.contrib.admindocs.urls')), - # url(r'^admin/', include(admin.site.urls)), + url(r'^admin/', include(admin.site.urls)), 不要であれば無効のままでもOK 13年2月24日日曜日 30
  • 31. 7. Django Project設定 5 DB設定の適用 # cd /var/www/django/djangotest # python manage.py syncdb <出力省略> You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (leave blank to use 'root'): E-mail address: 適当なメールアドレス Password: Djangoのrootパスワード Password (again): 同上 Superuser created successfully. <出力省略> メールアドレスは必須項目のため省略不可です。 13年2月24日日曜日 31
  • 32. 7. Django Project設定 6 wsgi ファイル作成 # cd /var/www/django/djangotest/djangotest # cat djangotest.wsgi import os, sys sys.path.append('/var/www/django/djangotest') os.environ['DJANGO_SETTINGS_MODULE'] = 'djangotest.settings' os.environ['PYTHON_EGG_CACHE'] = '/var/www/.python-eggs' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() project毎に作成してください。 sys.path.appendのパスもProject毎に変更が必要です。 13年2月24日日曜日 32
  • 33. 7. Django apache設定 # cat /etc/httpd/conf.d/django.conf <VirtualHost *:80> LoadModule wsgi_module modules/mod_wsgi.so ServerName preble.zumwalt.info Alias /static/admin /usr/local/lib/python2.7/site-packages/django/contrib/admin/static/admin WSGIScriptAlias /djangotest /var/www/django/djangotest/djangotest/djangotest.wsgi </VirtualHost> # /etc/init.d/httpd start # chkconfig httpd on project毎に WSGIScriptAlias を追記してください。 Servername は適宜変更してください。 13年2月24日日曜日 33
  • 34. 8. Django 諸々 アプリケーション作成 # cd /var/www/django/djangotest # python manage.py startapp testapp01 ・新規アプリケーションの作り方 アプリケーションを作成するProjectのフォルダ内で python manage.py startapp [アプリケーション名] adominページへのアクセス http://[ホスト名orIP]/[Project名]/admin/ ドキュメント(英語) https://docs.djangoproject.com/en/1.4/ 13年2月24日日曜日 34
  • 36. 8. Web2py インストール # mkdir /usr/local/src/web2py # cd /usr/local/src/web2py/ # wget http://www.web2py.com/examples/static/web2py_src.zip # unzip web2py_src.zip # cp -Rp web2py /var/www/. # chown -R apache:apache /var/www/web2py FedoraとかUbuntu用の設定スクリプトがありますが、 利用しようと思うとかなりの手直しが必要です。 インストールマニュアル変わりに程度にしたほうが… 13年2月24日日曜日 36
  • 37. 8. Web2py SSL設定 # yum install mod_ssl # mkdir /etc/httpd/ssl # openssl genrsa 2048 > /etc/httpd/ssl/oreore.key # openssl req -new -x509 -nodes -sha1 -days 3650 -key /etc/httpd/ssl/oreore.key > /etc/httpd/ssl/ oreore.cert Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:Gifu Locality Name (eg, city) [Default City]:hoge Organization Name (eg, company) [Default Company Ltd]:hoge Organizational Unit Name (eg, section) []:huga Common Name (eg, your name or your server's hostname) []:hoge.huga.jp Email Address []: # openssl x509 -noout -fingerprint -text < /etc/httpd/ssl/oreore.cert > /etc/httpd/ssl/oreore.cer # chmod 400 /etc/httpd/ssl/oreore.* 長は2048bitが最近の主流です。 有効期限とか検証なので10年、その他入力項目は適当に。 どうせオレオレ証明書ですし。 13年2月24日日曜日 37
  • 38. 8. Web2py apache設定 1 # cat web2py.conf NameVirtualHost *:80 NameVirtualHost *:443 LoadModule wsgi_module modules/mod_wsgi.so LoadModule ssl_module modules/mod_ssl.so Listen 443 SSLPassPhraseDialog builtin SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000) SSLSessionCacheTimeout 300 SSLMutex default SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin SSLCryptoDevice builtin WSGISocketPrefix run/wsgi <続く> ssl.conf を標準で使うと面倒なのでweb2py側に移植。 13年2月24日日曜日 38
  • 39. <続き> 8. Web2py apache設定 2 <VirtualHost *:80> WSGIDaemonProcess web2py user=apache group=apache display-name=%{GROUP} WSGIProcessGroup web2py WSGIScriptAlias / /var/www/web2py/wsgihandler.py <Directory /var/www/web2py/> AllowOverride None Order Allow,Deny Deny from all <Files wsgihandler.py> Allow from all </Files> </Directory> AliasMatch ^/([^/]+)/static/(.*) /var/www/web2py/applications/$1/static/$2 <Directory /var/www/web2py/applications/*/static/> Options -Indexes Order Allow,Deny Allow from all </Directory> <Location /admin> Deny from all </Location> <LocationMatch ^/([^/]+)/appadmin> Deny from all </LocationMatch> CustomLog /var/log/httpd/w2p_access_log common ErrorLog /var/log/httpd/w2p_error_log </VirtualHost> <続く> 13年2月24日日曜日 39
  • 40. 8. Web2py apache設定 3 <続き> <VirtualHost *:443> ServerName pinckney.zumwalt.info DocumentRoot "/var/www/web2py" SSLEngine on SSLCertificateFile /etc/httpd/ssl/oreore.cert SSLCertificateKeyFile /etc/httpd/ssl/oreore.key WSGIProcessGroup web2py WSGIScriptAlias / /var/www/web2py/wsgihandler.py <Directory /var/www/web2py> AllowOverride None Order Allow,Deny Deny from all <Files wsgihandler.py> Allow from all </Files> </Directory> AliasMatch ^/([^/]+)/static/(.*) /var/www/web2py/applications/$1/static/$2 <Directory /var/www/web2py/applications/*/static/> Order Allow,Deny Allow from all </Directory> CustomLog /var/log/httpd/sw2p_access_log common ErrorLog /var/log/httpd/sw2p_error_log </VirtualHost> adminページへのアクセスはhttpsにしないと動かない。 13年2月24日日曜日 40
  • 41. 8. Web2py apache設定 4 デフォルト設定の無効化 # cd /etc/httpd/conf.d/ # mv welcome.conf welcome.conf.disable # mv ssl.conf ssl.conf.disable admin パスワード設定 # cd /var/www/web2py # sudo -u apache python -c "from gluon.main import save_password; save_password(raw_input('admin password: '),443)" admin password: [adminページのパスワード] apache起動 # /etc/init.d/httpd start # chkconfig httpd on 起動に失敗したらログと睨めっこしましょう♪ この資料書くのに3時間くらいは睨めっこしました 13年2月24日日曜日 41
  • 42. 8. Web2py DB設定 1 DB作成 # mysql -u root -p Enter password: mysqlのrootパスワード mysql> create database web2py; mysql> grant all on web2py.* TO web2pyadmin@localhost identified BY 'web2pypass'; mysql> quit mysqlのrootパスワードは「6.MySQL」で設定したのです。 ユーザー名・パスワードは適宜変更してください。 DBはWeb2pyのアプリケーション毎に必要です。 13年2月24日日曜日 42
  • 43. 8. Web2py DB設定 2 DB設定 # diff -u /var/www/web2py/applications/welcome/models/db.py{.orig,} --- /var/www/web2py/applications/welcome/models/db.py.orig +++ /var/www/web2py/applications/welcome/models/db.py @@ -11,7 +11,8 @@ - db = DAL('sqlite://storage.sqlite',pool_size=1,check_reserved=['all']) + ## db = DAL('sqlite://storage.sqlite',pool_size=1,check_reserved=['all']) + db = DAL('mysql://web2pyadmin:web2pypass@localhost/web2py') DALの記載 mysql://ユーザ名:パスワード@localhost/データベース名 13年2月24日日曜日 43
  • 44. 8. Web2py 諸々 デフォルトページ http://[ホスト名orIP]/welcome adminページ https://[ホスト名orIP]/admin 日本語ドキュメント http://web2py.com/books/default/chapter/31 13年2月24日日曜日 44
  • 46. 9. まとめ • 初心者はApacheとかに組込まずに開発用サーバー使 いましょう。 は 屋。 • Python勉強会の資料…? • Djnago、Web2py共にアップデートで手順は変わって いきます。過去の手順は参考程度に。 • nginx と uWSGI の組合せだともうちょっと簡単らい いです。ただあまり融通が効かないとも。 13年2月24日日曜日 46