2009/04/24

mod_wsgi

mod_wsgi を使って Django の project を deploy しようとしました
でも WSGI のことは
WSGIとPythonでスマートなWebアプリケーション開発を:第1回 WSGIの概要|gihyo.jp … 技術評論社
で復習しないと曖昧にしか理解できてません、middleware とか
昔一度読んでるのであとは勘が頼りです

apache に mod_wsgi を読ませると wsgi-script という Handler が登録されるみたい
ConfigurationGuidelines - modwsgi - Basic configuration guide for mod_wsgi. - Google Code によると
The WSGI application contained within the code file specified should be called 'application'.

なので
wsgi-script として呼ばれた file に application という関数が定義されていれば
あとは server に渡して動かしてくれます

どうやって wsgi-script だと認識させるかというと
AddHandler, SetHandler, WSGIScriptAlias などを用います
WSGIScriptAlias は ScriptAlias と同じだと思えば OK なはず
これさえ設定してやれば
mod_wsgiでDjangoを動かすまでを淡々と記録する - スコトプリゴニエフスク通信
にあるような sample script はもぉ動くはず
あとは urls.py とか settings.py いじると Django も動く、tryl & error で

でも、これ 1 つの url で動くようになるけど
urls.py にある沢山の URL には対応しない??
試しに沢山ファイル作ったら動いたけどそれじゃ格好悪いし
1 つのファイルで全部受けることにしてあと PATH_INFO っぽい感じでっていうと
AddHandler だと /mysite/index.wsgi/vote/3 とかなるし、格好悪いし
(つうか本当は PATH_INFO ではないと思うんだけど、PATH_INFO って何だ?)
で〜、沢山検索しました
あー、何で ".htaccess" なんて入ってるかっていうと
どうも最初に system の設定 file をいじってるような説明があったので
local で何とかならないかなと思ったからなんですけど

で、結局どうしたかっていうと
SetHandler で拡張子無しで wsgi-script と思わせることにしました
え〜
でもまぁ、仕方ないですよね
Rails のときは lighttpd をサーバにして apache からそれを呼んだんだけど
Django でもそういうのできるのかな?
何かそっちの方がシンプルな気がしてきてるんだけど
また後日ググりましょう

0 件のコメント:

コメントを投稿