さくらインターネットでPythonを使うときにちょっとはまったので使い方をまとめておく。
としあえず自分は「スタンダード」で契約しているので「スタンダード」での動作説明となります。
設置方法の説明は公式のサポート情報がこちらにあります。
http://support.sakura.ad.jp/support/manual/rs/tech_cgi.shtml
主に必要な情報
CGIの拡張子 | .cgi |
---|---|
パス | /usr/local/bin/python |
ファイルパーミッション | 755 または 705 |
ディレクトリパーミッション | 755 または 705 |
cgi-binディレクトリ | 特に必要なし |
インポート(import)するファイルの拡張子 | .py |
注意点
- 拡張子は .py ではなく .cgi に変更する必要があります。
- パスはよく見かける /usr/bin/python ではなく /usr/local/bin/python であることに注意
- cgi-binディレクトリの使用はないためドキュメントルート(wwwディレクトリ)以下であればどこに設置しても動作する。
- ファイルパーミッションは 755 または 705 (最近、PHPばっかりやってたのでコイツを忘れてました)。
とりあえず。ネットとこちらの本を参考に「Hello world」プログラムを作ってみました。
- 作者: 柴田淳
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2007/11/30
- メディア: 単行本
- 購入: 6人 クリック: 199回
- この商品を含むブログ (40件) を見る
ネットだと Python のパス指定に
#!/usr/bin/python
というのも見かけたけどこれだとサーバによってパス部分を書き換えないといけないので不便だなぁと
思っていたのですがこちらの本では以下の記述を発見。
#!/usr/bin/env python
どう違うのかググったとこちらを発見。
http://www.python.jp/pipermail/python-ml-jp/2003-August/002464.html
あと、他のページで複数のPythonがインストールされている場合、どのPythonが使われるかわかったものではないので使うなという意見も…。
情報をまとめるとそれぞれの使用場面はこんな感じかな?
#!/usr/bin/python 形式のフルパス指定
- 厳密にバージョンを指定しないと動作しないとき。
- サーバに複数のバージョンが入っているとき。
#!/usr/bin/env python で指定
- そんなに最新のバージョンのものでなくても動作するもの。
- 短いテストプログラムで原因がすぐに分かるレベルのもの。
- サーバにPythonは1つでこれからもインストールする予定は無い場合。
- #!/usr/bin/env python2.5 とか記述して使用するバージョンを固定する方法もある。
サンプルレベルプログラムならともかく仕事で使うときなどはフルパス指定の方が良さそう。
とりあえず今回は以下のプログラムで問題なく動作することが確認できました。
#!/usr/local/bin/python # -*- coding: utf-8 -*- print "Content-Type: text/html\n" print "<html><body>Hello world!</body></html>"
Python Developers Camp 2008 冬に参加しときながらあまりPythonやってなかったけどこれからガンガン使っていく予定です。