強火で進め

このブログではプログラム関連の記事を中心に書いてます。

さくらインターネットでPythonを使う

さくらインターネット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」プログラムを作ってみました。

みんなのPython Webアプリ編 [みんなのシリーズ]

みんなのPython Webアプリ編 [みんなのシリーズ]

ネットだと 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やってなかったけどこれからガンガン使っていく予定です。