【问题标题】:Why apache with mod_wsgi timed out?为什么带有 mod_wsgi 的 apache 超时?
【发布时间】:2018-03-11 22:46:40
【问题描述】:

我使用 apache 和 mod_wsgi 来部署我的 django 项目。我所做的是:

  1. python manage.py startproject mysite 作为 django 教程指南,
  2. 在 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>
    

  3. 在地址栏中输入 example.com,然后得到超时响应:

    网关超时

    网关没有收到来自上游服务器或应用程序的及时响应。

如果只是一个玩具 django 应用程序,如何处理此超时?我认为这与性能问题无关,但可能是由一些错误配置引起的。有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: python django apache mod-wsgi


    【解决方案1】:

    你不需要:

    python-home=/usr
    

    因为您正在使用系统 Python。只有在使用 Python 虚拟环境时才需要它。

    现在添加:

    WSGIApplicationGroup %{GLOBAL}
    

    看看这是否改变了什么。如果这是一个全新的 Django 项目,则不应该这样做,但如果您已对其进行了更改并正在导入某些在 Python 子解释器中不起作用的 Python 包,那么您将需要它。

    还要检查 Apache 错误日志,因为它会为您提供更准确的超时发生原因。


    更新 1

    如果您自己编译了 mod_wsgi 并希望它使用/usr/local/python3 进行 Python 安装,您需要添加:

    WSGIPythonHome /usr/local/python3
    

    就在LoadModule 行之后wsgi_module。如果您还安装了 3.6 版的系统 Python,这一点非常重要。

    您还需要检查它是否选择了正确的共享库。使用ldd,如下所述:

    查看它正在拾取的 Python 共享库以及是否在 /usr/local/python3/lib 下找到它。如果它从/usr/lib 中提取一个,则会导致问题。

    【讨论】:

    • 嗨,格雷厄姆。出于格式和内容限制的原因,我在另一个地方回复了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    相关资源
    最近更新 更多