はじめに
さくらのレンタルサーバでスタンダードプランを利用しています。
Pythonで記述したシンプルな「Hello World」プログラムを作成して、
CGIとして動作させるまでを説明します。
Pythonで記載したプログラム
#!/usr/local/bin/python
print "Content-Type: text/html\n\n"
print "Hello World"
ファイル作成に関する留意点
ファイルの拡張子
「py」ではなく「cgi」にする必要があります(※1)。
※1:実は、拡張子をpyのままでcgiとして動作させる方法もあり、
これにについては、後述の「.htaccessの要否」をご参照ください。
文字コードと改行記号
文字コードを「UTF-8」にして、
改行記号を「LF」にすると良いです。
他の組み合わせだとエラーになることがあるそうです。
pythonへのコマンドパス
上記の「Hello.cgi」の1行目に記載されているpythonへのコマンドパス。
最新の情報は、さくらのサポートページ>「レンタルサーバサービス仕様」>「CGI・PHP・SSI について」のページで「プログラムのコマンドパス」という項目があるのでここで確認してください → さくらのサポートページ
レンタルサーバへのアップ
アップ先
作成したファイル「Hello.cgi」のアップ先は、ドキュメントルート(/home/アカウント名/www/)以下であればどこでも良く、ドキュメントルート以下に新しく作成したフォルダでも良いです。
権限の設定
ファイルパーミッションは、 755、705、700(※2)のいずれかに設定する必要があります。
また、ドキュメントルート以下に作成されたフォルダ内にファイル「Hello.cgi」をアップした場合は、ファイル「Hello.cgi」があるフォルダに対しフォルダパーミッションとして755、705、700(※2)のいずれかに設定する必要があります。
※2:さくらのサポートページには、
「755または705のいずれかに設定」と記載されていますが
コメント欄でご指摘を頂いた通り「700」でも動作しました。
セキュリティ面を考えると「700」がより良いように思います。
.htaccessの要否
「.htaccess」は不要です。
ただ、コメント欄でご指摘を頂いた通り、
このままですと拡張子「py」を「cgi」に直さないといけないので非効率です。
そこで、以下を記述した.htaccessを作成して
拡張子「py」のままでもcgiとして動作できるようにする
という方法もあります。
AddType application/x-httpd-cgi .py
参考(さくらのサポートページ)
最新の情報は、
さくらのサポートページ>「レンタルサーバサービス仕様」>「CGI・PHP・SSI について」のページで「ファイル、ディレクトリの設定」という項目があるのでここで確認してください → さくらのサポートページ
#動作確認
ブラウザで「hello.cgi」が配置されているURLを指定して
「Hello World」が表示されることを確認します。
URL指定例:
「hello.cgi」をドキュメントルートへ配置した場合は、
「https://(ドメイン名)/hello.cgi」となります。
#あとがき
ちょっとPythonでCGIを試してみようとしたときに、
簡単な事例があると便利だ!と思いましたので、
この投稿をしました。誰かのお役に立てれば幸いです。