DjangoをFastCGIで動かす

まずはflupを入れる。少し苦労した気がするのだがもうだいぶ時間が経ってしまったので忘れた。
FastCGIサーバーを動かすのは簡単。
FastCGIをExternalServerで動かすのは初めてだったのでなんか新鮮。
それよりmod_rewriteで苦戦。mod_rewriteにはいつもいつも苦労させられます。いまだによくわかってない。
で、書いてあった設定とちょっと違うのでメモっておく。

FastCGIExternalServer /var/django/mysite.fcgi -socket /var/django/mysite.sock
<VirtualHost *:80>
    ServerAdmin takatoshi.ono@gmail.com
    DocumentRoot /var/django
    ServerName django.takatoshi.dyndns.org
    ErrorLog logs/django/error_log
    CustomLog logs/django/access_log common

    <Directory /var/django>
        Options -Indexes
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /usr/lib/python2.4/site-packages/Django-0.95.1-py2.4.egg/django/contrib/admin/media>
        Options -Indexes
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

    RewriteEngine On
    RewriteRule ^/media/(.*)$ /usr/lib/python2.4/site-packages/Django-0.95.1-py2.4.egg/django/contrib/admin/media/$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^/(.*)$ /mysite.fcgi/$1 [QSA,L] 
</VirtualHost>

で、キモは/mediaをFastCGIにハンドルさせないようにするためのルールのとこです。
例だと

Alias /media /home/user/python/django/contrib/admin/media
RewriteRule ^/(media.*)$ /$1 [QSA,L]

ってしてるんだけどこれだとうまくいかなかったので変えました。
これのせいですげー時間かかっちまいました。
ちなみにFastCGIApacheの実行ユーザーで

$ python manage.py runfcgi socket=/var/django/mysite.sock pidfile=/var/django/mysite.pid

ってしておいた。

    • -

http://ymasuda.jp/python/django/docs_0.95/fastcgi.html
http://www.djangoproject.com/documentation/fastcgi/