OS X Server上的mod_wsgi守护程序模式

时间:2014-09-09 02:40:11

标签: python apache mod-wsgi osx-server

我已经使用内置服务器管理器使用config .plist和额外的httpd.conf在OS X Server 10.9上成功部署了我的Django webapp。

(根据:How does one deploy a django application on OS X Server?Deploying Django on OS 10.9 Server

现在我试图使用mod_wsgi的守护进程模式运行它,而不是使用默认的嵌入模式。

所以我回到了基础:运行包含的OS X Server mod_wsgi测试器裸Python脚本,它有一行httpd conf文件:

WSGIScriptAlias /wsgi /Library/Server/Web/Data/WebApps/hello.wsgi

将其更改为:

WSGIDaemonProcess wsgi_test processes=2 threads=15
WSGIProcessGroup wsgi_test

WSGIScriptAlias /wsgi /Library/Server/Web/Data/WebApps/hello.wsgi

但是,尝试重新打开站点时失败,并在apache错误日志中显示以下消息:

[Tue Sep 09 11:56:08 2014] [notice] caught SIGTERM, shutting down
[Tue Sep 09 11:56:12 2014] [crit] (17)File exists: mod_rewrite: Parent could not create RewriteLock file /var/log/apache2/rewrite.lock
Configuration Failed

然后该网站'取消'本身在服务器管理员。我已经检查过了,当web服务器关闭时,rewrite.lock文件不存在。

它应该有用吗?我的另一个问题是,是否支持开箱即用的守护进程模式,或者我需要一个新的mod_wsgi。

1 个答案:

答案 0 :(得分:0)

我在Yosemite的Apache错误日志中遇到了类似的错误“抓住SIGTERM,关闭”。不幸的是,我无法谈论mod_rewrite问题。

当WSGIDaemonProcess指令中没有设置python-path时,似乎会发生SIGTERM。

这是一个适用于我在OSX上使用基本Django应用程序的配置:

WSGIDaemonProcess myapp processes=2 threads=15 python-path=/path/to/django/app/
WSGIProcessGroup myapp
WSGIScriptAlias /myapp /path/to/django/app/wsgi.py process-group=myapp

<Directory "/path/to/django/app/">
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

我不确定&lt;目录&gt;配置是否必需。但是,在WSGIDaemonProcess中设置python-path为我解决了SIGTERM问题。

希望这有帮助。