mod_wsgiでDjango
Pylons を動かしたくて入れてみた mod_wsgi だったのに、 Django ばっかり触ってたらいつの間にか疎遠になっちゃってた。
が、ちょうど簡単なTODOリストを Django で作る事になったので、良い機会なのでコレを mod_wsgi で動かしてみる事に。
mod_wsgi からキックするスクリプトは IntegrationWithDjango を参考にして(ってかコピペして)必要に応じて書き換えるだけ。ファイル名はなんでも良いみたいなので、 dispatch.wsgi とかにして、 django-admin.py したディレクトリの中に apache なディレクトリを作ってそこに置いてみた。一応自分用にメモしとく。
import os
import sys
# プロジェクトディレクトリの1個上にした。
sys.path.append('/path/to/before/projects')
# settings.pyを指定。
os.environ['DJANGO_SETTINGS_MODULE'] = 'projects.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
httpd.conf もほとんど書いてあるものをコピペ。今回は VirtualHost を切って設定してみた。とりあえずこんな感じ。
<VirtualHost *:80>
ServerName example.com
DocumentRoot /path/to/projects/apache
Alias /media /path/to/projects/media
Alias /admin_media /path/to/django/contrib/admin/media
WSGIScriptAlias / /path/to/projects/apache/dispatch.wsgi
<Directory "/path/to/projects/media">
AllowOverride None
Allow from all
</Directory>
<Directory "/path/to/django/contrib/admin/media">
AllowOverride None
Allow from all
</Directory>
<Directory "/path/to/projects/apache">
AllowOverride None
Allow from all
</Directory>
</VirtualHost>
ココでとりあえずブラウザから確認してみる。
が、見事にエラー画面。指定されたテンプレートファイルが見つからないとの事。
そういえば、 settings.py の TEMPLATE_DIRS とか MEDIA_ROOT とか、全部osから抜き取ってた。(これじゃダメ?)ので、とりあえずコレを修正してみる。
# ココを変更。
#BASE_PATH = os.getcwd()
BASE_PATH = '/path/to/projects'
MEDIA_ROOT = os.path.join(BASE_PATH, 'media')
TEMPLATE_DIRS = (
os.path.join(BASE_PATH, 'templates'),
)
もう1度 apache をリスタートしてブラウザから確認。うむ、今回は動いた!素敵♪
コレと同じ事を、初めて mod_python で Django 動かした時にもやってハマった記憶がある。やっぱり apache 経由だと os.getcwd は取れないのかね?取れないか。
まだ全然開発段階なんだろうけど、 mod_wsgi には結構期待してたりする。って、言ってる矢先にちょっとした問題っぽいものを発見。 Yのほぼコード置き場 さんの コチラのエントリー 。
コレ、うちの環境もあてはまるんですけど。
とりあえず現状では mod_python はオフれないので、 mod_wsgi を一時あきらめる事にする。そのうち mod_wsgi に乗り換える日が来るのかね?
- Posted at:
- 2007/06/11 02:48:33
- 0 Comments
- 0 TrackBacks
- Trackback:
- http://humming.via-kitchen.com/2007/06/11/django-with-modwsgi/trackback/
TrackBacks
まだ登録されていません。
Comments
まだ登録されていません。