如何转换lighttpd mod_fastcgi到Apache 2.2 mod_fcgid

时间:2013-02-13 21:57:08

标签: python apache fastcgi flup

我有一个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对象请求https://TheEffKyouDeeEnn/MyFCGI/blah/blahblah作为POST时,系统的行为方式与我期望的一样,并将我的请求传递给在命令行上运行的Python脚本。

我需要在运行Apache 2.2的MS-Windows Server计算机上配置相同的功能。我想保留在网络上的任何地方部署我的Python脚本的能力,而不是仅在具有Apache实例的服务器上。虽然文档似乎表明这是可能的,至少使用mod_fcgid,我不能让它自己工作,也找不到一个有效的例子。

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

1 个答案:

答案 0 :(得分:0)

这与Apache2.2重复相同的功能。


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

    VirtualHost *:80

        DocumentRoot /var/www/

        Header set Access-Control-Allow-Origin "*"
        Header set Access-Control-Allow-Headers "Content-type"
        Header set Access-Control-Allow-Methods "POST,GET,OPTIONS"

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

        Directory /MyFCGI/
            Options FollowSymLinks +ExecCGI
            AllowOverride All
            SetHandler fastcgi-script
        /Directory

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

    /VirtualHost