为 Python 配置 FastCGI

为 Python 配置 FastCGI

我在虚拟机上运行 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或安装flupFCGI(即使它安装了额外的依赖项)。

要使用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_wsgiApache。对于 nginx,似乎有: http://wiki.nginx.org/NginxNgxWSGIModule 它甚至基于mod_wsgi。

相关内容