0

次を含むPythonスクリプトがあります。

from flup.server.fcgi import WSGIServer

def processRequest(environ, start_response):
    # proprietary business logic here
    return

WSGIServer(
    application = processRequest,
    bindAddress = ('0.0.0.0', 6543),
    umask = 0
    ).run()

Python 2.7.3 を使用して、ubuntu 12.04.2 LTS サーバーのコマンド ラインからこの Python スクリプトを実行します。

その同じサーバーで、lighttpd バージョン 1.4.28 が構成されています。

server.modules = (
    "mod_access",
    "mod_alias",
    "mod_compress",
    "mod_redirect",
    "mod_setenv",
    "mod_fastcgi",
    "mod_accesslog"
)

$SERVER["socket"] == ":443" {
    ssl.engine = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/secret.pem"
    server.document-root = "/var/www"

    fastcgi.server = (
            "/MyFCGI/" =>
            ((
                "host" => "127.0.0.1",
                "port" => 6543,
                "check-local" => "disable"
            ))
    )
}

JSON オブジェクトを使用して POST として要求https://TheEffKyouDeeEnn/MyFCGI/blah/blahblahすると、システムは期待どおりに動作し、コマンド ラインで実行されている Python スクリプトに要求を渡します。

Apache 2.2 を実行している MS-Windows Server マシンで同じ機能を構成する必要があります。Apache インスタンスのあるサーバーだけでなく、ネットワーク上の任意の場所に Python スクリプトをデプロイする機能を維持したいと考えています。ドキュメントはそれが可能であることを示しているようですが、少なくとも mod_fcgid を使用すると、自分で動作させることができず、実際の例を見つけることができません。

mod_fcgid が適切なモジュールであることを確認し、lighttpd の動作を再現するように Apache と mod_fcgid を構成する方法の例を挙げていただけますか?

4

1 に答える 1

0

これは、Apache2.2 と同じ機能を複製します。

    LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so
    LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so

    仮想ホスト *:80

        DocumentRoot /var/www/

        ヘッダー セット Access-Control-Allow-Origin "*"
        ヘッダー セット Access-Control-Allow-Headers "Content-type"
        ヘッダー セット Access-Control-Allow-Methods "POST,GET,OPTIONS"

        AliasMatch ^/MyFCGI/.*$ /var/my_fcgi.py

        ディレクトリ/MyFCGI/
            オプション FollowSymLinks +ExecCGI
            AllowOverride すべて
            SetHandler fastcgi スクリプト
        /ディレクトリ

         FastCgiExternalServer /var/my_fcgi.py -host localhost:6543

    /仮想ホスト

于 2013-02-19T22:15:17.303 に答える