Apache+Pythonの環境

みんなのPython Webアプリ編 [みんなのシリーズ]では、SimpleHTTPServer をimportして進めて行っているのですが、既にLAMP(PHP)環境がある私のUbuntuではちょっとやる気が起きなかったし、果たして最終的な公開サーバー上ではどうするのか?という疑問も、にわかには解消できないので、ApacheでPython動かす方法を採りました。(そうそう、Trac も Apacheで動いていることだし、最終的にはApacheで開発するってことで良いんじゃないのかなぁと勝手に思っています。)
ApacheのPythonモジュールを追加します。
$ sudo apt-get install libapache2-mod-python
000-defaultを編集
$ cd /etc/apache2/site-enabled
$ sudo vi ./000-default
<Directory /home/felix/www>   #この部分はデフォルトでは /var/www です。
     Options Indexes FollowSymLinks MultiViews
     AllowOverride None
     Order allow,deny
     allow from all

     #以下を追加

     AddHandler mod_python .py
     PythonHandler mod_python.publisher
     PythonDebug On
</Directory>
この後、Apache再起動です。
$ sudo /etc/init.d/apache2 restart
テスト用のコンテンツを作成します。phpの経験に倣って、なんでもよいから .py ファイルを作ってしまえば取り合えずテストできるというのは、だめな様です。(得にApacheに限っては結構記述方法が限定されていまいます。)以下のとおり記述します。
# -*- coding:utf-8 -*-
def index(req):
  return u"テスト成功"
これで、テスト用のページへ移動して、「テスト成功」と表示されていればOKです。どうやらApacheで書こうとすると、こんな感じの関数らしきもので記載しなくてはならない様です。単純に print 文の .py ファイルは存在すら認めてくれません。(そんなページは無いと言われてしまいます。)この def index(req) にどんな意味があるのか良く分かっていません。ちなみに、みんなのPython Webアプリ編 [みんなのシリーズ]p47を、Apacheで動かそうと思うと
# -*- coding:utf-8 -*-
def index(req):
   import datetime

   html_body=u"""
   <html><body>
   %d/%d/%d %d:%d:%d
   </body></html>"""

   now=datetime.datetime.now()

   return html_body % (now.year,now.month,now.day,now.hour,now.minute,now.second)
こんな感じです。あんまり、関連するページも見つけられないし・・・暴走ぎみかな・・・。