2013-01-13 14:15:00
この記事を運用しているサーバもMacOSX 10.7で動いているMac miniに移行した。いろいろ苦労したので、しばらく自分用の忘備録が続く予定。
mod_pythonは以前はMacOSに最初から入っていたような気がしていたが、今はどうやらないので、自分で入れなければならない。mod_wsgi使えみたいな記述を見かけるが、よく判らないのでここはmod_pythonで。最新版を(といってもちょっと古いが)をダウンロードして展開後、./configure → make → make install で簡単だろうと思ったら、
connobject.c: In function ‘_conn_read’: connobject.c:142: error: request for member ‘next’ in something not a structure or union apxs:Error: Command failed with rc=65536というエラーが出てしまった。途方に暮れて検索してみると、Snow Leopardにmod_pythonを導入(festangoの日記)というのを見つけたので、connobject.cの142行目の
!(b == APR_BRIGADE_SENTINEL(b) ||の (b) を (bb) に書き換えて、再度コンパイルすると問題なく完了。
次に、httpd.confに一行追加する。
LoadModule python_module libexec/apache2/mod_python.soさらに、/etc/apache2/extra/httpd-vhosts.conf の pythonスクリプトを動かしたいディレクトリについて、
<Directory /Library/WebServer/xxx/> AddHandler mod_python .py .psp PythonHandler mod_python.publisher | .py PythonHandler mod_python.psp | .psp PythonDebug On PythonInterpreter main_interpreter </Directory>などと追加。意味はよく判らない。動作確認のために、
from mod_python import apache def handler(req): req.write("It Works!!") return apache.OKというのを作って配置して確認しようとすると、not foundと云われてしまう。なぜなんだ。HOWTO: apache2 & mod_pythonというサイトにある
import time def index(): html = """ <html><head> <title>mod_python.publisher first html page</title> </head> <body> <h1>This page was generated by mod_python.publisher</h1><hr> The local time of this server is: %sThe timezone of this server is : %s </body> </html> """ % (time.ctime(time.time()), time.timezone/3600) return htmlというのを置いてみたら、ちゃんと表示された。やれやれ、よく判らないが動いたようだなと思って、設定したディレクトリを確認したらpythonスクリプトなんて一つもなかった。何年も前に頑張って作ったが、その後、もう使わなくなったのだった。何のための努力だったのか。まあ、また使う必要が生じるかも知れないので、ここに書き残しておこう。