2009-11-03 15 views
5

ApacheでFastCGI(実際にfcgid)を使用してPythonミニフレームワークCherryPyを設定しようとしています。私は共有ホスト上にいるので、httpd.confにアクセスすることはできません。ちょうどhtaccessです。私は無駄にこれらのチュートリアルに従っている:共有ホストにFastCGIを使用したCherryPy(またはその他のPythonフレームワーク)

私は "スクリプトヘッダの早すぎる終了" と言って、Apacheのログ/ wの500エラーを得続けます。私はすべてを試しました(パーミッション/シバンズ/フルパス/脱保護/非ダイモーニシ)。私はPythonからエラーログに出力することができるので、Apacheが私の.fcgiを正しく実行していることを知っていますが、それだけです。誰かが共有ホストにCherryPyやその他のフレームワークを正常にインストールしたことはありますか?あなたの助けに感謝します。ありがとう。

答えて

1

Bluehostの記事は最高のリソースでしたが、私は最新のパッチを入手することについて(ステップ3の始まり)、注意深く読んでいませんでした。記事の時点では、CherryPyバージョン3.1.2でも、動的モードのfcgi(apacheがプロセスを起動するとき)はできません。 more here。ダイナミックモードは、共有ホスト上にある場合は基本的に不可欠です。

私はトランク(3.2.0rc1)をチェックアウトし、いくつかのフープを飛び越えて動作させました。私はブルーホストの記事の手順5、方法Cに従った。

if __name__ == '__main__': 
    cherrypy.config.update({ 
     'server.socket_port': None, 
     'server.socket_host': None, 
     'server.socket_file': None 
    }) 
    start(daemonize=False, fastcgi=True, imports=["hello"]) 
また

、CherryPyに/プロセス/ servers.pyで、私は次の行に変更する必要がありました:ここに私のcherryd.fcgiのメインでのものだったので、

# from this 
# if not hasattr(socket.socket, 'fromfd'): 

# to this 
if not hasattr(socket, 'fromfd'): 

を、それがありますそれを稼働させることは可能ですが、ハッキーのような感じです。バージョン3.2.0の最終リリースを待つか、私がやったことをして、Web.pyをチェックしてください。私は共有ホストと非常に簡単に作業できるようになりました(ドキュメントでfastcgi/htaccessをよく説明しています)。

1

Apache + Bluehost + fastcgi + cherrypy + wsgiは残念ながら多くの部分です。私はあなたのために決定的なガイドを書く年があったと思うが、悲しいかな。 rather long mailing list threadから洞察を得て、あなたが投稿したリンクにつながります。

+0

私はできるだけ状況をコントロールするために、まず自分のLinuxボックスでデバッグしてきました。 リンクありがとうございます。それはかなり長い会話です。彼らは次のバージョンでよりシームレスなものを作ることができると願っています – arshaw

1

アイデア:あなたの.fcgiファイルは、最初の行で正しいのpythonの実行可能ファイルへの参照を持っていることを確認します!

#/ usr/bin/pythonを

私が取得しなければなりませんでしたDjangoがBluehostでfcgiを実行していて、間違ったpython環境を使っているApacheが私の問題でした(シェルからはうまくいったが、web/apacheからは動かなかった)。

それ以外の場合は、コードからエラーログに出力することができますが、Webページにアクセスしたときに例外なく、コードが正しく実行されていることを確認できますか? (シェルから実行していないとき)。

+0

ええ、私はシバンが正しいことを確認しただけでなく、アクセス許可。 私のpythonは間違いなく実行されていましたが、apacheはfastcgiを正しく接続していませんでした。 (上記の私の解決策を参照してください)。ありがとう – arshaw

0

ウェブサーバーのログファイルには、出力が混乱していたものが実際に表示されるはずです。エラーログとアクセスログを確認していますか?

+0

通常はハングアップします(出力なし)。私はdaemonize = Falseが必要であることを発見し、物事が止まった。しかし、それはポート4000でfcgiプロセスを開始しようとしましたが、apacheはそれについては知らなかったので、出力はありません。 'ダイナミックモード'が私の問題を解決するように見えます(私の解決策参照)。ありがとう – arshaw

関連する問題