Less is Best

rubyが好き。技術の話とスタートアップに興味があります。

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.wsgiapacheが書き込み、実行出来るようにする。

™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アプリケーションが自動で走ってくれるようになりました。