Django Apache2 VirtualEnv-服务器无响应

问题描述

因此,我正在尝试将我的应用迁移到新的生产服务器。访问服务器时,我没有收到服务器Apache服务器的答复。该服务器位于AWS上,并且是标准的Apache配置,仅启用了一个站点

<VirtualHost *:80>
    Alias /static/ /home/ubuntu/myapp/myapp/myapp/static
    Alias /media/ /home/ubuntu/myapp/myapp/myapp/media

    <Directory /home/ubuntu/myapp/myapp/myapp/static>
        Require all granted
    </Directory>

    <Directory /home/ubuntu/myapp/myapp/myapp/media>
                Require all granted
        </Directory>

    <Directory /home/ubuntu/myapp/myapp/myapp>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    WsgiDaemonProcess myapp python-home=/home/ubuntu/myapp/myapp/myapp python-path=/home/ubuntu/myapp:/home/ubuntu/myapp/lib/python3.6/site-packages
    WsgiProcessGroup myapp
    WsgiScriptAlias / /home/ubuntu/myapp/myapp/myapp/myapp/wsgi.py

    ErrorLog /var/log/apache2/myapp_error.log
    LogLevel warn
    CustomLog /var/log/apache2/myapp_access.log combined

</VirtualHost>

我确保所有文件均由ubuntu用户拥有,并且www-data具有组权限。

wsgi文件是原始文件,但是我添加了一条打印语句,以查看它正在检查应用程序的文件夹:

"""
Wsgi config for match2 project.

It exposes the Wsgi callable as a module-level variable named ``application``.

For more @R_953_4045@ion on this file,see
https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/
"""

import os,sys

print(sys.path)

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE","myapp.settings")

application = get_wsgi_application()

最终,错误日志将产生:

Timeout when reading response headers from daemon process 'myapp': /home/ubuntu/myapp/myapp/myapp/myapp/wsgi.py

我将不胜感激。

解决方法

Timeout when reading response headers from daemon process 'myapp'意味着您的应用程序需要很长时间才能处理该请求。这可能是因为它处于死锁状态,或者正在等待后端服务。

WSGIApplicationGroup添加到您的虚拟主机配置中。

<VirtualHost *:80>
    # config remaining parts
    WSGIApplicationGroup %{GLOBAL}
    # config remaining parts
</VirtualHost>

来自docs

...强制WSGI应用程序在每个进程的主Python解释器上下文中运行。在这种情况下,这是首选方法,因为某些包含C扩展名的Python第三方软件包将不会在mod_wsgi默认使用的Python子解释器上下文中运行。通过使用主要的Python解释器上下文,您消除了此类第三方Python软件包引起问题的可能性。

类似的情况link

也: 看着这个,

python-home=/home/ubuntu/myapp/myapp/myapp python-path=/home/ubuntu/myapp:/home/ubuntu/myapp/lib/python3.6/site-packages

我认为您使用python-home的路径错误。确保正确提供了python-home路径。激活您的虚拟环境并运行命令以获取python-home路径[docs]。

python -c 'import sys; print(sys.prefix)'