问题描述
因此,我正在尝试将我的应用迁移到新的生产服务器。访问服务器时,我没有收到服务器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)'