1. Apache + mod_wsgiで簡単に試す
Apacheで、/に来たリクエストを、自前のWSGI/pythonスクリプトに任せる設定。UbuntuでApacheとmod_wsgiを使う。
・ubunru 11で、apache2やmod_wsgi一式を入れる。
apt-get install libapache2-mod-wsgi
・自前のスクリプトapplication.wsgiを準備する。
/usr/local/www/wsgi-scripts/application.wsgiとして、
def application(env, start_response): start_response('200 OK', [('Content-type', 'text/plain')]) return ['Hello world']
・apacheの設定をする。/に来たリクエストを、自前のプログラムapplication.wsgiに任せる設定。
/etc/apache2/conf.d/wsgi-rootとして、
<Virtualhost *:80> WSGIScriptAlias / /usr/local/www/wsgi-scripts/application.wsgi <Directory /usr/local/www/wsgi-scripts> Order allow,deny Allow from all </Directory> </VirtualHost>
・apacheをリスタートし
/etc/init.d/apache2 restart
・ブラウザから、「http://ご自分のサーバー/」としてみると、「Hello World」と表示される。
2. もう少しWebアプリケーションっぽく
・Query Stringをエコー(危険)するapplication.wsgi例
def application(env, start_response): start_response('200 OK', [('Content-type', 'text/html')]) return ['insecure query string echo', '<hr>', env['QUERY_STRING'], '<hr>']
ブラウザから、「http://ご自分のサーバー/?test1=hello&test2=world」とかしてみる。query string一式"test1=hello&test2=world"がまるっと表示される。
・いわゆるGET値の取得(ついでに返信時にescapeしてみる)するapplication.wsgi例
from cgi import parse_qs, escape def application(env, start_response): q = parse_qs(env['QUERY_STRING']) start_response('200 OK', [('Content-type', 'text/html')]) return ['hello', '<hr>',escape(q.get('test1', [''])[0]), '<hr>']
ブラウザから、「http://ご自分のサーバー/?test1=hello&test2=world」とかしてみる。test1の値"hello"が、表示される。
ちなみにPOSTは、wsgi.inputを介して受け取るので、少し面倒です。
まじめにアプリケーションを作るには、WSGIの高級なフレームワーク(Djangoなど)を使うのがいいんでしょう。
0 件のコメント:
コメントを投稿