5

Apache で FastCGI (実際には fcgid) を使用して Python ミニフレームワーク CherryPy を構成しようとしています。私は共有ホストにいるので、httpd.conf にはアクセスできません。htaccess だけです。私はこれらのチュートリアルに従ったが役に立たなかった:

「スクリプトヘッダーの途中終了」というApacheログで500エラーが発生し続けます。私はすべてを試しました(パーミッション/シバン/フルパス/デーモン化/非デーモン化)。Python からエラー ログに出力できるので、Apache が .fcgi を正しく実行していることはわかっていますが、それだけです。以前に共有ホストに CherryPy やその他のフレームワークを正常にインストールした人はいますか? どうぞよろしくお願いいたします。ありがとう。

4

4 に答える 4

1

Bluehost の記事は最高のリソースでしたが、最新のパッチの入手に関する部分 (ステップ 3 の最初) を注意深く読んでいませんでした。この記事の時点では、CherryPy バージョン 3.1.2 でも、「動的モード」の fcgi を実行することはできません (Apache がプロセスを生成するとき)。詳細はこちら。共有ホストを使用している場合、動的モードは基本的に不可欠です。

トランク (3.2.0rc1) をチェックアウトし、いくつかのフープを飛び越えた後、動作するようになりました。bluehost 記事のステップ 5、メソッド C に従いました。これが私のcherryd.fcgiのメインのものです:

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/process/servers.py で、次の行を変更する必要がありました。

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

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

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

于 2009-11-12T05:56:51.577 に答える
1

Apache + Bluehost + fastcgi + cherrypy + wsgi は残念ながらたくさんのピースです。決定版ガイドを書くのに 1 年あればよかったのですが、残念ながら。あなたが投稿したリンクにつながったかなり長いメーリング リスト スレッドから、ある程度の洞察が得られるかもしれません。

于 2009-11-03T15:40:24.533 に答える
1

アイデア: .fcgi ファイルの最初の行に正しい python 実行可能ファイルへの参照があることを確認してください。

#!/usr/bin/python

Bluehostでfcgiを使用してDjangoを実行する必要があり、間違ったpython環境を使用するapacheが問題でした(シェルからは機能しましたが、web/apacheからは機能しませんでした)。

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

于 2009-11-04T10:13:59.053 に答える
0

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

于 2009-11-09T02:25:21.117 に答える