我有一个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.28server.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行为?
答案 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