我无法解决此问题。我有一个在Ubuntu 14.04服务器上运行的Django应用程序(Apache 2.4和用于Python 3.4的mod_wsgi)。它通过pymssql连接到SQL Server。
在开发中,该应用程序运行正常。我查询数据库,数据库返回预期的结果。
然而,在生产中(在Apache用户下),脚本会在进行数据库查询的确切位置挂起。我的浏览器(Chrome或Firefox)显示一个旋转轮,只要浏览器窗口打开就会继续旋转。
我的apache2.conf
文件中有以下内容:
ServerName localhost
# WSGIDaemonProcess application
WSGIPythonPath /home/production_code/python3env/lib/python3.4/site-packages:/home/production_code/school
# WSGIProcessGroup application
WSGIScriptAlias / /home/production_code/school/school/wsgi.py
# Python virtualenv home
WSGIPythonHome /home/production_code/python3env
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
以下sites-enabled/000-default.conf
文件中的以下内容:
<VirtualHost *:80>
ServerAdmin *****@school.edu
ServerName localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static/ /home/production_code/school/static/
<Directory /home/production_code/school/>
Require all granted
</Directory>
<Directory /home/production_code/school/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
<Directory /home/production_code/school/static>
Require all granted
</Directory>
</VirtualHost>
是否有人知道可能导致此问题的原因或我如何解决此问题?在这种情况下,Apache错误日志和访问日志不是特别有用,因为永远不会呈现对请求的响应。同样,Django调试在这里也没用。
答案 0 :(得分:4)
而不是:
# WSGIDaemonProcess application
WSGIPythonPath /home/production_code/python3env/lib/python3.4/site-packages:/home/production_code/school
# WSGIProcessGroup application
使用:
WSGIDaemonProcess application python-path=/home/production_code/python3env/lib/python3.4/site-packages:/home/production_code/school
WSGIProcessGroup application
WSGIApplicationGroup %{GLOBAL}
这是WSGIApplicationGroup
指令的关键部分,它被设置为%{GLOBAL}
。
这是为了解决Python中错误的第三方扩展模块,这些模块在子解释器中不起作用,并且可能因死锁或崩溃而失败。
请参阅:
还建议您返回使用守护程序模式。使用嵌入模式通常不是一个好主意。