为什么页面在apache2,mod_wsgi,django中挂起/超时,在虚拟环境中和非特权用户下

时间:2015-06-01 05:44:41

标签: django apache mod-wsgi

当我转到52.1.65.249时,页面会挂起或超时。我在/ home / usrbkto / bkto / projbkto的非root用户下有一个django项目。

我在运行ubuntu 14.04和python 2.7.8以及ubuntu 15.04和python 2.7.9的两台服务器上遇到同样的问题。我相信PyPi上的mod_wsgi是使用python 2.7.8编译的,所以对于运行python 2.7.9的服务器,我从Github下载并使用我服务器上的python版本编译。一切都工作正常,直到我一次更新我的包,所以我不确定哪个包更新破坏了。我怀疑它与我没有正确使用新版本的mod_wsgi这一事实有关,但我不确定,我想将我的Django项目保留在非root用户下,而无法访问Apache文件。

我在/etc/apache2/sites-available/bkto.conf上的自定义配置文件是:

WSGIScriptAlias / /home/usrbkto/bkto/projbkto/projbkto/wsgi.py
WSGIPythonHome /home/usrbkto/vent
WSGIPythonPath /home/usrbkto/bkto/projbkto

LogLevel info


<Directory /home/usrbkto/bkto/projbkto/projbkto>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

Alias /media/ /home/usrbkto/bkto/projbkto/media/
Alias /static/ /home/usrbkto/bkto/projbkto/static/

<Directory /home/usrbkto/bkto/projbkto/static>
Require all granted
</Directory>

<Directory /home/usrbkto/bkto/projbkto/media>
Require all granted
</Directory>

apache error.log是:

[Mon Jun 01 05:14:41.082545 2015] [mpm_event:notice] [pid 32630:tid 140666831587200] AH00489: Apache/2.4.10 (Ubuntu) mod_wsgi/4.4.12 Python/2.7.9 configured -- resuming normal operations
[Mon Jun 01 05:14:41.082692 2015] [mpm_event:info] [pid 32630:tid 140666831587200] AH00490: Server built: Mar  9 2015 11:53:48
[Mon Jun 01 05:14:41.082713 2015] [core:notice] [pid 32630:tid 140666831587200] AH00094: Command line: '/usr/sbin/apache2'
[Mon Jun 01 05:14:41.083297 2015] [wsgi:info] [pid 32634:tid 140666831587200] mod_wsgi (pid=32634): Python home /home/usrbkto/venv.
[Mon Jun 01 05:14:41.083401 2015] [wsgi:info] [pid 32634:tid 140666831587200] mod_wsgi (pid=32634): Initializing Python.
[Mon Jun 01 05:14:41.089325 2015] [wsgi:info] [pid 32632:tid 140666831587200] mod_wsgi (pid=32632): Python home /home/usrbkto/venv.
[Mon Jun 01 05:14:41.089442 2015] [wsgi:info] [pid 32632:tid 140666831587200] mod_wsgi (pid=32632): Initializing Python.
[Mon Jun 01 05:14:41.181394 2015] [wsgi:info] [pid 32634:tid 140666831587200] mod_wsgi (pid=32634): Attach interpreter ''.
[Mon Jun 01 05:14:41.181479 2015] [wsgi:info] [pid 32634:tid 140666831587200] mod_wsgi (pid=32634): Adding '/home/usrbkto/bkto/projbkto' to path.
[Mon Jun 01 05:14:41.182781 2015] [wsgi:info] [pid 32634:tid 140666831587200] mod_wsgi (pid=32634): Imported 'mod_wsgi'.
[Mon Jun 01 05:14:41.186652 2015] [wsgi:info] [pid 32632:tid 140666831587200] mod_wsgi (pid=32632): Attach interpreter ''.
[Mon Jun 01 05:14:41.186718 2015] [wsgi:info] [pid 32632:tid 140666831587200] mod_wsgi (pid=32632): Adding '/home/usrbkto/bkto/projbkto' to path.
[Mon Jun 01 05:14:41.212429 2015] [wsgi:info] [pid 32632:tid 140666831587200] mod_wsgi (pid=32632): Imported 'mod_wsgi'.
[Mon Jun 01 05:14:47.101220 2015] [wsgi:info] [pid 32634:tid 140666698360576] mod_wsgi (pid=32634): Create interpreter 'ip-172-31-4-180.ec2.internal|'.
[Mon Jun 01 05:14:47.102574 2015] [wsgi:info] [pid 32634:tid 140666698360576] mod_wsgi (pid=32634): Adding '/home/usrbkto/bkto/projbkto' to path.
[Mon Jun 01 05:14:47.104087 2015] [wsgi:info] [pid 32634:tid 140666698360576] [client 64.94.31.206:47918] mod_wsgi (pid=32634, process='', application='ip-172-31-4-180.ec2.internal|'): Loading WSGI script '/home/usrbkto/bkto/projbkto/projbkto/wsgi.py'.
[Mon Jun 01 05:16:46.847615 2015] [wsgi:info] [pid 32632:tid 140666612999936] mod_wsgi (pid=32632): Create interpreter 'ip-172-31-4-180.ec2.internal|'.
[Mon Jun 01 05:16:46.848995 2015] [wsgi:info] [pid 32632:tid 140666612999936] mod_wsgi (pid=32632): Adding '/home/usrbkto/bkto/projbkto' to path.
[Mon Jun 01 05:16:46.850506 2015] [wsgi:info] [pid 32632:tid 140666612999936] [client 166.137.244.128:61084] mod_wsgi (pid=32632, process='', application='ip-172-31-4-180.ec2.internal|'): Loading WSGI script '/home/usrbkto/bkto/projbkto/projbkto/wsgi.py'.

/home/usrbkto/bkto/projbkto/projbkto/wsgi.py上的wsgi.py文件是:

"""
WSGI config for projbkto project.

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

For more information on this file, see
https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/
"""

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "projbkto.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

1 个答案:

答案 0 :(得分:2)

PyPi的mod_wsgi版本是源代码而不是二进制文件。要说使用某个Python版本编译PyPi上的mod_wsgi并没有任何意义,因为它们是使用你拥有的任何Python版本在你自己的系统上编译的。

无论如何,阅读本文并尝试给出的补救措施:

这是由Python C扩展引起的锁定的常见修复,它不能正确编码以在子解释器中工作。

也停止使用嵌入模式并使用守护进程模式:

如果这些没有帮助,请说明它是否易于复制或随机。