您将如何设置具有多个虚拟主机的python Web服务器?

时间:2009-02-11 15:46:07

标签: python webserver environment wsgi

我被告知wsgi是要走的路而不是mod_python。但更具体地说,您将如何设置多网站服务器环境?选择Web服务器等?

3 个答案:

答案 0 :(得分:4)

Apache + mod_wsgi是一种常见的选择。

这是一个简单的示例vhost,设置为将/ wsgi / something的任何请求映射到应用程序(然后可以查看PATH_INFO以选择操作,或者您正在执行调度)。根URL“/”也被路由到WSGI应用程序。

LoadModule wsgi_module /usr/local/lib/mod_wsgi.so
...

<VirtualHost *:80>
    ServerName                  www.example.com
    DocumentRoot                /www/example/htdocs
    WSGIScriptAliasMatch ^/$    /www/example/application.py
    WSGIScriptAlias      /wsgi  /www/example/application.py
</VirtualHost>

如果您愿意,可以使用WSGIProcessGroup指令为不同的vhost分隔处理程序。如果您需要在不同用户下运行vhosts的脚本,则需要使用WSGIDaemonProcess而不是嵌入式Python解释器。

运行时,application.py将使您的WSGI可调用于全局“应用程序”变量中。您还可以添加一个run-as-main页脚,以便与老式CGI兼容:

#!/usr/bin/env python
from mymodule import MyApplication

application= MyApplication()

if __name__=='main':
    import wsgiref.handlers
    wsgiref.handlers.CGIHandler().run(application)

答案 1 :(得分:1)

我建议Nginx用于Web服务器。设置快速简便。

您可能希望每个vhost都有一个unix用户 - 因此每个主目录都拥有自己的应用程序,python环境和服务器配置。这允许您安全地重新启动特定应用程序,只需通过杀死您的vhost所拥有的工作进程即可。

只是一个提示,希望它有所帮助。

答案 2 :(得分:0)

您可以使用Apache和mod_wsgi。这样,你仍然可以使用Apache对vhosts的内置支持。