apache の設定
まずは mod_python を入れたよって設定。/etc/apache2/httpd.conf に以下の行を加える。
LoadModule python_module libexec/apache2/mod_python.so
設定を読み込ませるためにはリスタート。
Macintosh:mod_python-3.3.1 paraches$ sudo apachectl restart
これで apache そのもの?の設定は終わり。泣いたのは各ディレクトリの設定。
mod_python で .py なファイルを動かすのに、そのディレクトリに設定をする。で、その書き方はこんな感じ。(これは hello ってディレクトリに .htaccess で設定した場合)
AddHandler mod_python .py PythonHandler hello PythonDebug On
これは何?ってのはココで説明されてる。何回か読み返したけど、最後の「"http://myserver/mywebdir/myscript.py" も "http://myserver/mywebdir/montypython.py" も同じ結果になるのです。」が今ひとつわからない。ファイルが無くたって良いって…? 確かにやってみると「そんなファイル無い!」ってエラーにならないけど…。ディレクトリ名がクラス(オブジェクト?)になってその中の .py が定義ファイル…みたいな?
ま、それは置いておいて、後は apache の
<Directory "/Users/paraches/Sites/"> Options MultiViews AllowOverride All Order allow,deny Allow from all </Directory>
こうして、/Users/paraches/Sites/hello で .htaccess を
AddHandler mod_python .py PythonHandler hello PythonDebug On
こうしてる。
で、/Users/paraches/Sites/hello の中の hello.py は参考にしたサイトそのまんま
from mod_python import apache def handler(req): req.content_type = "text/plain" req.send_http_header() req.write("Hello, World!!") return apache.OK
というわけで、なんとか mod_python で .py なスクリプトを動かす事はできた。まだ仕組みはしっかり理解できてないけど…。
あと、忘れちゃいけないのが、apache は httpd.conf に間違いがあると起動しない。最初、なんで Safari が「サーバにアクセスできません」って言ってくるのか全然わからなかった。/var/log/apache2/ にある error と access のログには「設定ファイルが間違っています!」なんてログ残ってないし。って、ここまで書いて気付いた!コンソール見たら出てたんじゃない?…って、あった〜! これに気付いてればもっとさっくり動いただろうに…
Invalid command 'LoasModule', perhaps misspelled or defined by a module not included in the server configuration
ところで、今回は MacBook で試しての結果なのだけど、PowerMac G5 でも同じ事をしてみたらコンソールにこんなエラーが
httpd: Syntax error on line 116 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_python.so into server: dlopen(/usr/libexec/apache2/mod_python.so, 10): no suitable image found. Did find:\n\t/usr/libexec/apache2/mod_python.so: mach-o, but wrong architecture
これは一体どういう意味だろう? mach-o だけど違うアーキテクチャ? PPC じゃなくて Intel のイメージだからダメ!って事? それとも 32bit と 64bit とか???