Keep on moving

あんまりまとまってないことを書きますよ

Flaskをnginx+fastcgiで動かす

Flaskをnginxで動かしてみたくていろいろ調べてみました。

参考

Flask の公式ドキュメントこの通り実行すれば動きますです。

環境

  • VirtualBox 4.0.0
  • ubuntu10.10 64bit
  • python2.6.6(標準)

aptで導入

  • nginx

ソース

Flaskのアプリ一式
/var/www/flask/myapp
http://bitbucket.org/ehren/flask_training

.fcgiファイルの置き場所
/var/www/flask/mysite.fcgi

設定ファイル

.sockはfcgiファイルとnginx設定ファイルで同じパスになるようにすること。

  • /etc/nginx/sites-available/for_flask
location / { try_files $uri @training; }
location @training {
    include fastcgi_params;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    fastcgi_param SCRIPT_NAME "";
    fastcgi_pass unix:/tmp/flask-fcgi.sock;
}
#!/usr/bin/python
import sys,os
sys.path.append('/var/www/flask/myapp')

from flup.server.fcgi import WSGIServer
from training import app as application

WSGIServer(application, bindAddress='/tmp/flask-fcgi.sock').run()

作業内容

実行
nginxはfastcgi用のスクリプトをたたいてくれないとのこと*1なので
screenなどをつかって実行します。ubuntuではwww-data権限で実行しましょう

$ screen
$ sudo chmod +x /var/www/flask/mysite.fcgi
$ sudo -u www-data /var/www/flask/mysite.fcgi

宿題

実際には起動スクリプトを/etc/init.d に登録する必要があるのですが、
今日はうまく行きませんでした。なんでしょうねぇorz
というわけで宿題です。

まとめ

Flaskは公式ドキュメントが充実してるのでいろいろ読んでみると良いと思います。
とくにPatterns for Flask — Flask 0.9dev documentationは一度読んでみるとPythonの近頃のライブラリがいろいろ紹介されていて楽しいです。

*1: Flaskの公式ドキュメントによるとlighttpdなら実行してくれるとのこと