webpy を mod_python で動かしてみる。



Django を使ってやろうと思っていたのですが、どうも
思うように動いてくれない・・・

ということで、web.pyに浮気してみました。


http://webpy.org/


ググってみると、
「python の web サーバでデバッグ起動」

「cgiで起動」
は、見かけるのですが
「mod_python で起動」
がなかなか見つからない。

ということで、webpyのインストールから mod_python での
起動を試してみました。


まずはwebpyが使うブツをインストール

apt-get install python-cheetah python-mysqldb python-flup


※python-flupはいらないかも

mod_python インストール

apt-get install libapache2-mod-python2.4


wsgiref インストール
チュートリアルだと、svnからダウンロードになってましたが、
うまくいかなかったので、tarをブラウザからダウンロードしました。

http://svn.eby-sarna.com/wsgiref/wsgiref/にアクセスして、Download tarball

/usr/lib/python2.4/site-packages
にダウンロードしたtarballを解凍

解凍したフォルダに移動して、modpython_gateway.pyをダウンロード

cd /usr/lib/python2.4/site-packages/wsgiref
wget -O modpython_gateway.py http://projects.amor.org/misc/browser/modpython_gateway.py?format=raw



とりあえず動きを見たかったので、/var/www/webpy を作って、
.htaccessを作成

AddHandler python-program .py
PythonHandler wsgiref.modpython_gateway::handler
PythonOption wsgi.application code::main



code.py はこんな感じ

import web

urls = (
'/', 'index',
'/faq', 'faq'
)

main = web.wsgifunc(web.webpyfunc(urls,globals()))


class index:

def GET(self):
web.header("Content-Type", "text/html; charset=utf-8")
print "hello, world!"


class faq:
def GET(self):
web.header("Content-Type", "text/html; charset=utf-8")
print "module faq was called!"

if __name__ == '__main__':
web.run(urls, globals())

http://exsample.com/webpy/code.py/
で、hello, world!
http://exsample.com/webpy/code.py/faq
で、module faq was called!
が表示されるはず。



※簡単そうに書いてますが、相当苦労しました・・・



参考
http://webpy.org/install
http://rewind.s53.xrea.com/diary/2006/01/08/out-it/
http://d.hatena.ne.jp/tokuhirom/20060225/1140867631


もどる