PythonをLighttpdで動作させる方法は?


25

Raspberry PiでLighttpdをセットアップしましたが、サーバー側のコードを動作させたいと思います。私はPHPに精通していますが、Raspberry Piの「行き先」言語であるはずのPythonを試してみるべきだと思います。Lighttpd経由でPythonがサーバー側のコードを処理するにはどうすればよいですか?


penzilla.net/tutorials/python/cgiリンクは壊れていますが、すばらしい記事をありがとう。私のPiが明日届きます!

回答:


16

必要なのは、lighttpdのCGIサポートです。

lighttpd構成ファイル(/etc/lighttpd/lighttpd.conf)を開き、「mod_cgi」行のコメントを外し(存在する場合は行の先頭から#を削除します)、存在しない場合はこの行を追加します。

server.modules = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_auth",
            "mod_ssi",
            "mod_cgi",
            "mod_compress",
            "mod_fastcgi",
            "mod_rewrite",
            "mod_magnet",
)

ファイルの最後に次を追加します。

$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( ".py" => "/usr/bin/python" )
}

lighttpdデーモンを再起動します。

sudo service lighttpd force-reload

次に、Webサーバーのルートディレクトリの下にcgi-binディレクトリを作成します。このディレクトリにある.pyで終わるファイルは、Pythonによって処理されます。

これで、Webリクエストを処理するPythonスクリプトを作成できます。Pythonを使用したCGIプログラムの作成に関するこのチュートリアルを読むことをお勧めします。

一方、フレームワークを使用して低レベルの詳細を処理し、開発者の生産性を向上させる場合は、web.pyをチェックすることをお勧めします。aptを使用してインストールできます。

sudo apt-get install python-webpy

Cloud 101 BlogのLucasは、webpyフレームワークを使用してWebページを作成するための素晴らしいチュートリアルを投稿しました。


これはFastCGIまたはCGIですか?
マークイングラム

プレーンなCGIでは、リクエストごとにPythonインタープリターを起動する必要があるため、時折のリクエストにのみ適していることに注意してください。
トールビョーンラヴンアンデルセン

残念ながら、これは部分的にしか機能しませんでした。「http://(IP)/cgi-bin/test.py?parameter=xxx」を呼び出すことでPythonを実行できますが、「http://(IP)/cgi-bin/test.cgi?parameter=xxx」はできません"-後者は404エラーを返します...
576iの

@ 576iこの行を変更してみてくださいcgi.assign =( ".py" => "/ usr / bin / python")からcgi.assign =( ".cgi" => "/ usr / bin / python")
Steve Robillard

1
@ 576i別の質問のコメントでこの議論を続けるのではなく、新しい質問を開いて、何が機能し、何を試したかを含めてください。次に、これらのコメントを削除します。ところで、.py拡張子だけでは対応できない理由はありますか?
スティーブロビラード14

3

受け入れられた答えは私にとってはうまくいきませんでした。また、Lighttpdで利用可能な事前設定されたパッケージも無視します。

RaspberryのLighttpdにPythonをインストールする正しい方法は次のとおりです。

最初にcgiを有効にします

sudo lighttpd-enable-mod cgi

これにより、Lighttpdの新しい構成ファイルが作成されます。

/etc/lighttpd/conf-enabled/10-cgi.conf

設定ファイルを編集しnano /etc/lighttpd/conf-enabled/10-cgi.conf、次のようになりして、

server.modules += ( "mod_cgi" )

$HTTP["url"] =~ "^/cgi-bin/" {
        alias.url += ( "/cgi-bin/" => "/var/www/cgi-bin" )
        cgi.assign = (
                ".py"  => "/usr/bin/python",
        )
}

以下を実行して、python 2がインストールされていることを確認します。

/usr/bin/python --version

今、再起動

sudo /etc/init.d/lighttpd force-reload

がんばろう!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.