swgiを使ってFlaskアプリケーションをデプロイする方法
swgiを使ってFlaskアプリケーションをデプロイする方法
最近Pythonで自然言語処理を使ったwebアプリケーションを作りたいなと思ったので、Pythonのminimalなフレームワークについて勉強しておりました。 そこで、Flaskアプリケーションをデプロイする方法でちょっとはまったので、メモしておきたいと思います。
まず、flaskアプリケーションのルートディレクトリにwsgiファイルを作る。
#!/usr/local/bin/python2.7 # -*- coding:utf-8 -*- # Flaskアプリケーショントップのパスをpathに追加 import sys, os sys.path.insert(0, "/var/flask/sample") from runp import app as application
ちなみに、importされているrunp.pyはこんな感じ
#!/usr/local/bin/python2.7 from app import app if __name__=="__main__": app.run(debug=False)
そして、™p/sample.logとsample.wsgiをapacheが書き込み、実行出来るようにする。
™p/sample.logの所有ユーザーをapacheに指定してあげる sample.wsgiの所有ユーザーをapacheに指定してあげる
$ chown apache:apache tmp/sample.log $ chown apache:apache sample.wsgi
apacheの設定
mod_wsgiをインストール
$ cd /usr/local/src $ wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz $ tar vzxf mod_wsgi-3.4.tar.gz $ cd mod_wsgi-3.4 $ ./configure --with-python=/usr/local/bin/python2.7 $ make $ make install
$ vi /etc/httpd/conf/httpd.conf
+ LoadModule wsgi_module modules/mod_wsgi.so
virtualhostの設定をする
$ vi /etc/httpd/conf.d/vhost.conf
WSGISocketPrefix /var/run/wsgi <VirtualHost *:80> ServerName sample.com WSGIDaemonProcess sample.com user=apache group=apache threads=5 WSGIScriptAlias / /var/flask/sample/sample.wsgi WSGIScriptReloading On <Directory /var/flask/sample> WSGIProcessGroup sample.com WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all </Directory> </VirtualHost>
これで、sample.comにアクセスすればFlaskアプリケーションが自動で走ってくれるようになりました。