2009-02-11 21 views

回答

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指令爲不同的虛擬主機分開處理程序。如果你需要虛擬主機的腳本在不同的用戶下運行,你需要使用WSGIDaemonProcess而不是嵌入式的Python解釋器。

application.py在運行時會將WSGI調用到全局「應用程序」變量中。您還可以添加一個兼容老派CGI的主運行頁腳:

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

application= MyApplication() 

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

我建議Nginx的Web服務器。快速和容易設置。

你可能希望每個虛擬主機有一個unix用戶 - 所以每個主目錄都有它自己的應用程序,python環境和服務器配置。這使您可以安全地重新啓動特定應用程序,只需簡單地殺掉您的虛擬主機擁有的工作進程即可。

只是一個提示,希望它有幫助。

+0

我一直在尋找一個嘗試nginx的理由,所以我會在本地機器上打這個。謝謝! – schmilblick 2009-02-11 17:17:21

+0

mod_wsgi的守護程序模式允許您將WSGI應用程序委派給每個虛擬主機的不同進程,甚至是在同一虛擬主機中。然後,您可以以各種方式強制重新啓動WSGI應用程序,而無需重新啓動整個Apache。 – 2009-06-25 01:39:03

0

您可以使用Apache和mod_wsgi。這樣,您仍然可以使用Apache對vhosts的內置支持。

相關問題