Pyramidを本番環境で動かしたい① 〜Apache+mod_wsgi環境を作る
将来的にPyramidプロジェクトを本番環境で動かしたいと思っている.
で,練習がてら,Pyramidを本番環境で動かせるようにしてみる.
Pyramidのデプロイ
Pyramidの公式ページにはデプロイする方法がいくつか載っている.
- Nginx + paster + supervisord
- Apache + mod_wsgi
- gevent
- heroku
- DotCloud
- OpenShift Express Cloud
- Google App Engine
- Windows環境
どれにしようか迷ったが,前にさくらVPSを借りて,既にApacheの設定をしてるし,難しいことは自分にはできないので,定番中の定番のApache + mod_wsgiにすることにした.
どうでもいいけど,wsgiの読み方って,「うぃずぎー」らしいね.
本番環境
さくらのVPS(v3) 1G
OS | CentOS 6.3 x86_64 |
---|---|
CPU | 仮想2コア |
メモリ | 1G |
Apache | 2.2.15 |
---|---|
Python | 2.6.6 |
mod_wsgi | 3.4 |
自分はpython2.6.6のままだけど,2.7系でも問題ないと思う.
mod_wsgiを使えるようにする
httpd-develのインストール
$ yum list installed | grep httpd
で調べたら,httpd-develはまだインストールしていなかったので,インストールする.
$ yum -y install httpd-devel
mod_wsgiのインストール
ソースコードをダウンロードして,解凍する.
ソースコードはここから最新版をとってくればいいかと.
$ wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz $ tar zxvf mod_wsgi-3.4.tar.gz $ cd mod_wsgi-3.4
configureして,Makefileを生成する.
$ ./configure
makeとmake install.(sudoが必要,かもね)
$ make $ make install
Apacheの設定
DocumentRootが/var/www/htmlの場合,/etc/httpd/conf/httpd.confを開いて,以下のように変更する.
<Directory "/var/www/html">
Options Indexes FollowSymLinks ExecCGI
(略)
</Directory>
OptionsにExecCGIを追加するだけ.
また,
Include conf.d/*.conf
が設定されていることを確認する.
設定されていなければ,追記する.
次に,/etc/httpd/conf.d/mod_wsgi.confを作成して,以下を記述する.
LoadModule wsgi_module modules/mod_wsgi.so
<Directory "/var/www/html/">
AddHandler wsgi-script .wsgi
AddHandler wsgi-script .py
</Directory>
これで,さっきインストールしたmod_wsgiがロードされ,ドキュメントルート配下の.pyと.wsgiファイルがpythonで実行できるようになる.
そして,Apacheを再起動.
ここで,起動に失敗したら,どこかにミスがある.
/etc/rc.d/init.d/httpd restart
動かしてみる
/var/www/html/app.pyを作成して,以下を記述する.
# -*- coding: utf-8 -*- import datetime d = datetime.datetime.today() time = '%s年%s月%s日 %s時%s分%s秒\n' % (d.year, d.month, d.day, d.hour, d.minute, d.second) def application(environ, start_response): status = '200 OK' response_headers = [('Content-type', 'text/plain')] start_response(status, response_headers) return [time]
で,http://<自分のサーバのドメイン>/app.pyにアクセスして,今日の日付と今の時間が表示されれば成功.
長くなりそうだし,Pyramidをデプロイするのは次で.
> Pyramidを本番環境で動かしたい② 〜Apache+mod_wsgiでPyramidを動かす - [[ともっくす alloc] init]