Jan 13, 2013

MacOSX Lionでmod_python

ポスト @ 14:15:00 , 修正 @ Jan 13, 2013 5:15:00 | MacOSX

 この記事を運用しているサーバも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スクリプトなんて一つもなかった。何年も前に頑張って作ったが、その後、もう使わなくなったのだった。何のための努力だったのか。まあ、また使う必要が生じるかも知れないので、ここに書き残しておこう。

Trackback

No Trackbacks

Track from Your Website

http://nakano.no-ip.org/attic/trackback/tb.php?id=746
(言及リンクのないトラックバックは無視されます)