2008年10月21日火曜日

PythonならCGIの動くWebサーバが3行で書ける!?

インターネットの向こう側にある「ホームページ」を提供するサーバ。

実はサーバの中では「Webサーバ」というプログラムが動作しています。
このプログラム、IEとかのメッセージを受け取って、対応するページの情報を送ってくれたりする役割を担っているのですが。

実はPythonには、このWebサーバ機能がライブラリとして備わっています。
import cgi
import BaseHTTPServer,CGIHTTPServer

BaseHTTPServer.HTTPServer(( '127.0.0.1', 8080 ), CGIHTTPServer.CGIHTTPRequestHandler ).serve_forever()


以上。

これで、このスクリプトを例えば「server.py」とかのファイル名でUTF-8エンコードで保存して、コマンドラインから
python server.py

とか実行すると、8080ポートでこのサーバが起動するんですよ。

このライブラリと同じフォルダに「index.html」とか置いておいて、ブラウザに
http://localhost:8080/

って実行すると、index.htmlがサイトとして表示されます。
ファイル、たとえば「hoge.html」とかを増やして、ブラウザで
http://localhost:8080/hoge.html

とかってやると、そのファイルが表示されます。おー。


しかもこいつ、CGI機能もついてます。

Python CGIを置けるフォルダははいくつかデフォルトで指定されているらしく、「htbin」と「cgi-bin」。

なので、サーバ起動スクリプトのあるフォルダに新しく「htbin」フォルダを作って、
# -*- coding: utf-8 -*-
print """
HTTP Server(CGI) now serving.
"""

とか書いた新しいファイル、例えば「cgitest.py」を置いて、ブラウザから
http://localhost:8080/htbin/cgitest.py

とかアクセスすると、上の文章が表示されます。おー。

やるなPython。

出典(3行サーバスクリプト):http://python.g.hatena.ne.jp/faerie/20061114/p1