Pythonをapache2で使用するにはどうすればよいですか?


13

PythonをApacheで動作させようとしていますが、CGIまたはmod_pythonで成功していません。

誰かが良いチュートリアルや何かを知っていますか?

ありがとう。

回答:


17

mod_python基本的にメンテナンスされていません-を調べる必要がありますmod_wsgi。パッケージをインストールし、libapache2-mod-wsgi発行sudo a2enmod wsgiして有効にします。

それを実行するための簡単な例として、次のようなものをあなたのに詰めてください/etc/apache2/sites-enabled/default

WSGIScriptAlias /test /path/to/python/file.py

そして、ファイル内/path/to/python/file.py

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return "Hello World"

Apache2を再起動した後、Pythonファイルでのリクエスト/testはの呼び出しに変わりapplication()ます。

さらに読むには、PythonがWebサーバーと統合する方法であるWSGI(WebServer Gateway Interface)を調べてください。

ボーナス/アップデート:

Python(当然)には、テスト用の標準ライブラリに小さなWSGIサーバーがあります。これをファイルの下部に追加すると、テスト目的で任意の古い実行可能ファイルとして実行でき、Apacheが本番環境に引き継ぐことができます。

if __name__ == '__main__':
    from wsgiref.simple_server import make_server

    httpd = make_server('', 8080, application)
    print "Serving on http://localhost:8080"

    httpd.serve_forever()

Apacheログから次のエラーを取得しました。私が知る限り、それは文字列を取得していないと考えています。
バレー

[2011年3月5日17:06:14] [エラー] [クライアント127.0.0.1] mod_wsgi(pid = 2844):WSGIスクリプト '/var/www/file.py'の処理中に例外が発生しました。[2011年3月5日17:06:14] [エラー] [クライアント127.0.0.1]トレースバック(最新のコールラスト):[2011年3月5日17:06:14土曜日] [エラー] [クライアント127.0.0.1]ファイル " /var/www/file.py "、行2、アプリケーション[Sat Mar 05 17:06:14 2011] [error] [client 127.0.0.1] start_response(200、[( 'Content-Type'、 'text / plain ')])[2011年3月5日17:06:14] [エラー] [クライアント127.0.0.1] TypeError:ステータスに必要なバイト文字列オブジェクト、int型の値が見つかった
-Vallery

あ。私の悪い。私はすべてのトリッキーなことをやってくれるフレームワークに慣れています;)。私が更新した200'200 OK'あたりpython.org/dev/peps/pep-0333
モートンSiebuhr

それはうまくいきました。最後の質問:HTMLで表示するにはどうすればよいですか?私のブラウザーは、マークアップを無視して、戻り値をプレーンテキストで表示します。
バレリー

1
待ってください:text / plainをtext / htmlに変更します。
バレリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.