Apache2のmod_pythonで、バーチャルドメイン全体を1つのスクリプトでさばく
基本線設定ファイルがいじれるなら設定ファイルに書いたほうがいいとかApacheのマニュアルにも書いてあったのでそうする。
バーチャルドメイン自体の設定の復習
バーチャルドメイン自体の設定ファイル群が/etc/apache2/sites-available/にあると仮定する。
defaultをコピーしてそれ用の設定ファイルを作る(ここではhogeとする)
ServerName hoge.example.com
を<VirtualHost *:80>下に書く。
あとは
sudo ln -s /etc/apache2/sites-available/hoge /etc/apache2/sites-enabled/001-hoge sudo /etc/init.d/apache2 restart
とかするなり。
あとは大前提という物があるので、
sudo apt-get install libapache2-mod-python
しておく。
mod_pythonの設定
ここからメイン。
バーチャルドメインの設定ファイル下、例えばDocumentRootと同じディレクトリをさすDirectoryディレクティブの下に、SetHandler, PythonHandler, PythonDebugを追加する。と、こんな感じ。
<Directory /var/hoge/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all SetHandler mod_python PythonHandler index PythonDebug On </Directory>
この場合、DocumentRootにおいてある、index.py内のhandler(req)に全てのリクエストが集約される。
あとはreqの中身を見てどうこうすれば良い感じ。
詳しくは404 Not Foundを参照するなり。
基本、index.pyは上のマニュアルにもあるが、
from mod_python import apache def handler(req): req.content_type = "text/plain" req.write("Hello World!") return apache.OK
みたいな感じになる。使ってみた感じ雰囲気的には非常に軽そうで良い。