我已经使用内置服务器管理器使用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。
答案 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问题。
希望这有帮助。