为什么 mod_wsgi 的 apache 超时?
Why apache with mod_wsgi timed out?
我使用 apache 和 mod_wsgi 来部署我的 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 应用程序,如何处理这个超时?我认为这与性能问题无关,但可能是由某些错误配置引起的。有人能帮忙吗?谢谢!
你不需要:
python-home=/usr
因为您正在使用系统 Python。只有在使用 Python 虚拟环境时才需要。
现在添加:
WSGIApplicationGroup %{GLOBAL}
看看是否有任何改变。如果这是一个全新的 Django 项目,则不应该,但是如果您更改了它并正在导入某些 Python 包,这些包在 Python 子解释器中不起作用,您将需要它。
同时检查 Apache 错误日志,因为它会为您提供更准确的超时原因。
更新 1
如果您自己编译 mod_wsgi 并希望它使用 /usr/local/python3
进行 Python 安装,您需要添加:
WSGIPythonHome /usr/local/python3
就在 wsgi_module
的 LoadModule
行之后。如果您还安装了 3.6 版的系统 Python,这一点非常重要。
您还需要检查它是否选择了正确的共享库。按照以下说明使用 ldd
:
查看正在获取的 Python 共享库以及是否在 /usr/local/python3/lib
下找到。如果它从 /usr/lib
中拾取一个,那将导致问题。
我使用 apache 和 mod_wsgi 来部署我的 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 应用程序,如何处理这个超时?我认为这与性能问题无关,但可能是由某些错误配置引起的。有人能帮忙吗?谢谢!
你不需要:
python-home=/usr
因为您正在使用系统 Python。只有在使用 Python 虚拟环境时才需要。
现在添加:
WSGIApplicationGroup %{GLOBAL}
看看是否有任何改变。如果这是一个全新的 Django 项目,则不应该,但是如果您更改了它并正在导入某些 Python 包,这些包在 Python 子解释器中不起作用,您将需要它。
同时检查 Apache 错误日志,因为它会为您提供更准确的超时原因。
更新 1
如果您自己编译 mod_wsgi 并希望它使用 /usr/local/python3
进行 Python 安装,您需要添加:
WSGIPythonHome /usr/local/python3
就在 wsgi_module
的 LoadModule
行之后。如果您还安装了 3.6 版的系统 Python,这一点非常重要。
您还需要检查它是否选择了正确的共享库。按照以下说明使用 ldd
:
查看正在获取的 Python 共享库以及是否在 /usr/local/python3/lib
下找到。如果它从 /usr/lib
中拾取一个,那将导致问题。