11.1.6 Unixシステムに CGIスクリプトをインストールする

HTTPサーバのドキュメントを読んで、サーバの管理者と一緒にCGIスクリプトがインストールされるべき ディレクトリをチェックしましょう; 普通、これはサーバディレクトリツリーの中の `cgi-bin'ディレクトリとなります。

あなたのスクリプトが、``others''によって読み取りおよび実行可能であることを確認してください; Unixファイルモードでは 755となります(chmod 755 filenameしましょう)。 またスクリプトの最初の行は1カラム目から、#!に続いて パイソン・インタープリタのパスになっていることを確認します。例えば:

#!/usr/local/bin/python

パイソン・インタープリタ自体も ``others''によって実行可能であることを確かめること。

スクリプトが読み書きするファイルはすべて、``others''によって読み書きできなければなりません。 モードは読み出しが 644で書き込みが 666です。 これは、HTTPサーバはスクリプトをセキュリティ上の理由により ``nobody''ユーザとして 何の特権も持たずに実行するためです。 それが読み出しだけが可能であれば、誰にでも読み出しだけが可能です(書き込み・実行も同様)。 実行時のカレントディレクトリも(普通はサーバの cgi-binディレクトリ)、 一連の環境変数もあなたがユーザとしてログインしたときとは異なります。 特に、シェルのコマンドサーチパス($PATH)と パイソンのモジュールサーチパス($PYTHONPATH)は 何か面白い値になるためあてにできません。

もしパイソンのデフォルトサーチパス以外のディレクトリからモジュールをロードしようと思えば、 モジュールをロードする前にスクリプトの中でパスを変更する必要があります。例:

import sys
sys.path.insert(0, "/usr/home/joe/lib/python")
sys.path.insert(0, "/usr/local/lib/python")


(この場合、最後に追加(というか挿入)されたディレクトリが最初に検索されます!)

Unixではないシステムの場合はいろいろです; HTTPサーバのドキュメントを調べてください(普通は CGIスクリプトの章にあるでしょう)。

guido@python.org