1

Django を使用してクライアント用のサイトを構築しています。共有ホスティングでホストされており、mod_wsgi は使用できません。昔はfcgiで動いていたのですが、戻ってきたら壊れていました。

fcgi スクリプトを単純な hello world スクリプトに置き換えました。

#!/usr/bin/python
def myapp(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ['Hello World!\n']

try:
    from flup.server.fcgi import WSGIServer
    WSGIServer(myapp).run()
except:
    import sys, traceback
    traceback.print_exc(file=open("errlog.txt","a"))

ローカル サーバーでテストして動作していますが、ホストされているサーバーでは次のエラーが発生します。

<title>FCGI Error</title>
A timeout occured while waiting for the script output (in: /usr/www/users/mymemb/).

エラーログを見ると、次のように表示されます。

[Wed Jan  6 16:59:37 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" (user mymemb, gid 100) restarted (pid 1057)

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" (pid 1057) terminated by calling exit with status '118'

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

etc ...

サーバーに SSH で接続すると、スクリプトを正常に実行でき、次の出力が得られます。

mymemb@www81:~/public_html$ ./mymembers.fcgi 
WSGIServer: missing FastCGI param REQUEST_METHOD required by WSGI!
WSGIServer: missing FastCGI param SERVER_NAME required by WSGI!
WSGIServer: missing FastCGI param SERVER_PORT required by WSGI!
WSGIServer: missing FastCGI param SERVER_PROTOCOL required by WSGI!
Status: 200 OK
Content-Type: text/plain
Content-Length: 13

Hello World!

これを修正するにはどうすればよいですか?

追加情報:

スクリプトがまったく実行されていないようです。スクリプトの先頭に import x を追加して ssh から実行すると、x.pyc が作成されることがわかります。x.pyc を rm してサイトにアクセスすると、x.pyc が作成されません。

また、エラーがから変更されたことにも気付きました

terminated by calling exit with status '118'

terminated by calling exit with status '116'

これらの終了ステータスのリファレンスを見つけることができれば幸いです。

4

2 に答える 2

2

終了ステータス 116 および 118 は、suexec からのものでした。ソースコードを読むと、これらのエラーはファイル/ディレクトリがグループまたは他のユーザーによって書き込み可能であることが原因であることがわかりました。これは suexec がセキュリティ上の問題と見なしています。グループから書き込みアクセスを削除すると、問題が修正されました。

于 2010-01-10T20:51:36.800 に答える
0

ねえ、ありがとう!コメントだけ貼っておきます。

  • mymembers.fcgi を実行するためにどのサーバーを使用していますか? – 東武
  • Debian Etch、Apache 1.3 URL は mymembers.co.za です – Gary van der Merwe
  • mod_fastcgi の設定が間違っていると思われます。Apache 構成の関連部分を投稿または貼り付けてください。– 東武
  • これは共有ホスティングでホストされているため、構成を確認することは考えていませんでした。構成を見て問題を見つけることができたので、本当に助かりました。あなたに報奨金を授与できることを願っています。meta.stackoverflow.com/questions/35081/… – ゲイリー・ヴァン・デル・メルウェ
于 2010-01-10T21:12:37.770 に答える