我正在使用带有mod_wsgi的apache来部署我的django项目。我做的是:
python manage.py startproject mysite
作为django教程指南,在apache conf / httpd.conf中添加以下配置:
ServerName www.example.com
ServerAlias example.com
ServerAdmin webmaster@example.com
WSGIDaemonProcess example.com processes=2 threads=15 display-name=%{GROUP} python-path=/root/mysite python-home=/usr
WSGIProcessGroup example.com
WSGIScriptAlias / /root/mysite/mysite/wsgi.py
<Directory /root/mysite/mysite>
Require all granted
</Directory>
在地址栏中键入example.com,然后获得超时响应:
网关超时
网关未收到上游服务器或应用程序的及时响应。
如果只是一个玩具django应用程序如何处理这个超时?我认为这与性能问题无关,但可能是由于一些配置错误造成的。有人可以帮忙吗?谢谢!
答案 0 :(得分:0)
您不需要:
python-home=/usr
因为你正在使用系统Python。如果使用Python虚拟环境,则只需要这样做。
现在添加:
WSGIApplicationGroup %{GLOBAL}
并查看是否有任何改变。如果这是一个全新的Django项目,它应该不会,但如果你已经改变它并导入某些在Python子解释器中不起作用的Python包,你将需要它。
同时检查Apache错误日志,因为它会为您提供更准确的超时原因。
更新1
如果您自己编译mod_wsgi并希望它使用/usr/local/python3
进行Python安装,则需要添加:
WSGIPythonHome /usr/local/python3
在LoadModule
的{{1}}行之后。如果您还为3.6版本安装了系统Python,那么这一点非常重要。
您还需要检查它是否正在选择正确的共享库。使用wsgi_module
,如下所述:
查看它正在拾取的Python共享库以及是否在ldd
下找到它。如果它从/usr/local/python3/lib
中选择一个会导致问题的那个。