擅长:python、mysql、java
<p>下面的解决方案只针对Linux用户,已经在UbuntuServer12.04.1下测试过了</p>
<p>要在守护进程模式下运行WSGI,需要在Apache配置文件中指定<code>WSGIProcessGroup</code>和<code>WSGIDaemonProcess</code>指令,例如</p>
<pre><code>WSGIProcessGroup my_wsgi_process
WSGIDaemonProcess my_wsgi_process threads=15
</code></pre>
<p>更多详细信息请参见<a href="http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives">http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives</a></p>
<p>如果您在同一服务器下运行多个WSGI站点(可能使用VirtualHost指令),则额外的好处是额外的稳定性。在不使用守护进程的情况下,我发现两个Django站点相互冲突,或者出现500个内部服务器错误。</p>
<p>此时,您的服务器实际上已经在监视您的WSGI站点的更改,尽管它只监视您使用<code>WSGIScriptAlias</code>指定的文件,如</p>
<pre><code>WSGIScriptAlias / /var/www/my_django_site/my_django_site/wsgi.py
</code></pre>
<p>这意味着您可以通过更改WSGI脚本来强制WSGI守护进程重新加载。当然,你不必改变它的内容,而是</p>
<pre><code>$ touch /var/www/my_django_site/my_django_site/wsgi.py
</code></pre>
<p>会成功的。</p>
<p>通过使用上述方法,您可以在生产环境中自动重新加载WSGI站点,而无需重新启动/重新加载整个Apache服务器,或修改WSGI脚本来执行生产不安全代码更改监视。</p>
<p>当您有自动部署脚本,并且不想在部署时重新启动Apache服务器时,这一点特别有用。</p>
<p>在开发过程中,您可以使用文件系统更改监视程序在站点下的模块每次更改时调用<code>touch wsgi.py</code>,例如<a href="https://github.com/cmheisel/pywatch">pywatch</a></p>