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"
            ))
    )
}

当我https://TheEffKyouDeeEnn/MyFCGI/blah/blahblah使用 JSON 对象作为 POST 请求时,系统会按照我预期的方式运行,并将我的请求传递给在命令行上运行的 Python 脚本。

我需要在运行 Apache 2.2 的 MS-Windows Server 机器上配置相同的功能。我想保留将我的 Python 脚本部署在网络上任何位置的能力,而不仅仅是在具有 Apache 实例的服务器上。尽管文档似乎表明这是可能的,但至少使用 mod_fcgid,我自己无法使其工作,也找不到工作示例。

您能否确认 mod_fcgid 是合适的模块并举例说明如何配置 Apache 和 mod_fcgid 以复制我的 lighttpd 行为?

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

        文档根目录 /var/www/

        标头集 Access-Control-Allow-Origin "*"
        标头集访问控制允许标头“内容类型”
        标头集 Access-Control-Allow-Methods "POST,GET,OPTIONS"

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

        目录 /MyFCGI/
            选项 FollowSymLinks +ExecCGI
            允许覆盖所有
            SetHandler fastcgi 脚本
        /目录

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

    /虚拟主机

于 2013-02-19T22:15:17.303 回答