【发布时间】:2016-07-14 01:54:21
【问题描述】:
我正在按照本指南为我的 django Web 应用程序配置 apache: https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/#basic-configuration
我在 ubuntu 15.10 服务器上安装了Django、mod_wsgi-express(新方式)和mod_wsgi for apache,使用:
pip install Django
pip install mod_wsgi
sudo aptitude install libapache2-mod-wsgi
接下来我将以下内容添加到:/etc/apache2/apache2.conf
WSGIScriptAlias / /home/user/mysite/mysite/wsgi.py
WSGIPythonPath /home/user/mysite:/home/user/.local/lib/python2.7/site-packages
<Directory /home/user/mysite/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
但是当我启动 apache 时出现以下错误:
[Sat Mar 26 12:10:06.876025 2016] [wsgi:error] [pid 10622:tid 139806697674496] [client 217.40.250.17:52124] from django.core.wsgi import get_wsgi_application
[Sat Mar 26 12:10:06.876057 2016] [wsgi:error] [pid 10622:tid 139806697674496] [client 217.40.250.17:52124] ImportError: No module named django.core.wsgi
但该模块确实存在于我在上面 WSGIPythonPath 中提供的路径中:
~/.local/lib/python2.7/site-packages/django/core $ cat wsgi.py
import django
from django.core.handlers.wsgi import WSGIHandler
还有:
~/.local/lib/python2.7/site-packages $ ll
total 24
drwx------ 6 user user 4096 Mar 24 22:25 ./
drwx------ 3 user user 4096 Mar 20 20:56 ../
drwxrwxr-x 17 user user 4096 Mar 24 22:25 django/
drwxrwxr-x 2 user user 4096 Mar 24 22:25 Django-1.9.4.dist-info/
drwxrwxr-x 5 user user 4096 Mar 20 20:59 mod_wsgi/
drwxrwxr-x 2 user user 4096 Mar 20 20:59 mod_wsgi-4.4.22.egg-info/
我还尝试验证构建 mod_wsgi 模块的 python 版本:
/usr/lib/apache2/modules $ ldd mod_wsgi.so
linux-vdso.so.1 => (0x00007ffe50f31000)
libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007f376fbc2000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f376f9a4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f376f5d9000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f376f3bf000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f376f1bb000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f376efb7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f376ecaf000)
/lib64/ld-linux-x86-64.so.2 (0x00005609838b3000)
看来它是针对 Python 2.7 构建的,与安装 Django 的版本相同。
那么为什么 apache 无法加载我的应用程序/django?
【问题讨论】:
-
是的,阅读了这两篇文章,但它们没有描述您实际上需要更改包含 django 和 Web 应用程序的文件夹的权限。我只找到了一个描述它的参考资料,请参阅我更新的问题
-
欢迎来到 Stack Overflow。如果您的解决方案是您对问题的答案,那么请创建一个真实的答案,并充分解释其工作原理。 SO将让您在超时后选择解决方案。请不要将解决方案放在您的问题中,因为这不是问题的目的。此外,请不要在更改问题/答案时添加“编辑:”或“更新:”标签。我们可以看到修改了什么。而是将信息添加到最初添加的位置。
标签: python django apache ubuntu importerror