- web.pyのホームページのGET IT: web.pyの所からweb.pyをダウンロード。
- web.pyを$HOME/lib/python/の下に置いておく。
- flupをダウンロード。
$ python setup.py install --home=${HOME} --force
で、flupをインストール。flupが無いとCGIが動作しないので注意。- .htaccessに、
AddHandler cgi-script .py
を書いておく(これはいらないかも)。 - 以下のファイルを$HOME/www/a.pyとして作成しておく。パーミッションは755で。
#!/usr/bin/env python
import sys
sys.path.append('/home/ユーザー名/lib/python')
import web
urls = (
'/', 'view'
)
class view:
def GET(self):
print "\r\n"
print "Hello, world!"
web.internalerror = web.debugerror
if __name__ == '__main__':
web.run(urls, web.reloader) - webブラウザで、http://サーバーのアドレス/a.py/にアクセス。最後の/を忘れずに。
- Hello, Worldと表示されればOK。
参考にしたサイト:
「さくらのレンタルサーバ」で Python 外部モジュールを使う
11 件のコメント:
さくらインターネットのレンタルサーバに書いたステップ通りやって見ましたが、うまく行きません。ずっと「500Internal Server Error」 ほかに考えられる原因はなにかありませんか?助けてください!
これ、という理由は思いつかないのですが…
とりあえず、apache経由でなく、直接web.pyをHTTPサーバーとして動作させてみてはいかがでしょうか。
sshでloginして、
$ python a.py
とすると、ポート8080でweb.pyが動作します。
ブラウザで、
http://サーバーのアドレス:8080/
にアクセスして、Hello worldと表示されればOKです。
http://サーバーのアドレス:8080/にアクセスと以下のエラーが表示された
Traceback (most recent call last):
File "/home/ユーザー名/lib/python/web/webapi.py", line 303, in wsgifunc
result = func()
File "/home/ユーザー名/lib/python/web/request.py", line 125, in <lambda>
func = lambda: handle(inp, fvars)
File "/home/ユーザー名/lib/python/web/request.py", line 47, in handle
cls = mod[cls]
TypeError: unsubscriptable object
すみません、web.pyだけlib/pythonにコピーしたら、Hello worldが表示されました、web.pyパッケージのインストールはだめか。。。
私の記事では、web.py 0.1を使っていました。
web.py 0.2だと、確かにエラーになりますね。
web.py 0.2の場合、以下のようにすると動作すると思います。
#!/usr/bin/env python
import sys
sys.path.append('/home/パス/python')
import web
urls = (
'/(.*)', 'hello'
)
class hello:
def GET(self, name):
i = web.input(times=1)
if not name: name = 'world'
for c in xrange(int(i.times)): print 'Hello,', name+'!'
if __name__ == "__main__": web.run(urls, globals())
web.pyというファイル一つだけなのは、0.1系です。
0.2以降は、複数ファイルに分割されています。
kenjさんが最初にお使いだったのは0.2で、後のは0.1系です。
sakuraiさんが書いた通りweb.py 0.2にも正しく表示されました、ありがとうございます。
しかし、http://サーバーのアドレス/a.py/にアクセスして、相変わらず「500Internal Server Error」
.htaccessファイルはAddHandler cgi-script .pyだけでよろしいでしょうか
実行のパーミッションの設定は行われているでしょうか。
もし行われていない場合は、
$ chmod a+x a.py
のようにしてみてください。
これで動作しない場合は…
ちょっと思いあたる点がありません。
実行パーミッションの設定は問題ないです。
flupがうまく動作していないのかもしれませんね。
私が使っているのは、以下の組み合わせです。
flup-r2030
web.py 0.138
ディレクトリ構造は、
/home/username/lib/python/web.py
/home/username/lib/python/flup/
a.pyでのsys.path.appendは、
/home/username/lib/python
です。
あと手としては、apacheのログを見るとかでしょうか。
(さくらインターネットって、apacheのログを見る事ができるんでしたっけ?)
sakuraiさんの指摘通りでした、flupの問題でした、flup-0.5からflup-r2030に変更した所正しく表示されました。
親切に教えてくれて本当にありがとうございます。
コメントを投稿