我在虚拟机上运行 nginx,我想运行 Trac 站点。我需要运行一个 python FastCGI 服务器,但我不知道哪个是这服务器。我发现以下内容:
- Lighttpd spawn-fcgi但这似乎要求你编译 lighttpd 才能获得 fcgi 服务器,这很奇怪。
- 函数库但这个似乎已被弃用。至少它的文档记录很差。
- 弗卢普这个版本带有对 ubuntu 的依赖(python-cheetah{a} python-mysqldb{a} python-webpy{a}),但似乎没有必要。文档记录也很差。
有没有最新的设置指南?Trac 自己的 FastCGI 设置页面好像漏掉了一些步骤。
答案1
trac
现在应该符合 WSGI 规范,因此您可以使用任何受支持的方法来运行站点。如果站点流量较低,您可以始终使用 CGI,并在需要时最终转向其他方法。对于其他方法,请使用mod_wsgi
或安装flup
FCGI(即使它安装了额外的依赖项)。
要使用flup
,你必须导入适当的 WSGI 服务器,然后运行它,即
from flup.server.fcgi_fork import WSGIServer
def main_app(...):
...
WSGIServer(main_app).run()
如果您想将其作为外部服务器运行(即不由 Web 服务器启动),请替换以下内容:
WSGIServer(main_app,bindAddress=('1.2.3.4',9999)).run()
答案2
好吧,flup 是 Django 本身使用的。除非您有 mod_wsgi 或类似的东西,否则它是运行 python fastcgi 应用程序的绝佳方法。
运行 flup 的代码是:
from flup.server.fcgi import WSGIServer
def app(environ, start_response):
start_respone('200 OK', [('Content-Type', 'text/plain')])
yield "Hello World"
WSGIServer(app).run()
答案3
为什么特别提到 FastCGI?在 Python 中,有一个用于编写 Web 服务器应用程序的标准接口,称为 WSGI。各种服务器都提供执行此操作的框架;例如,mod_wsgi
Apache。对于 nginx,似乎有:
http://wiki.nginx.org/NginxNgxWSGIModule
它甚至基于mod_wsgi。