Apache2 无法加载 wsgi.py

Apache2 can not load wsgi.py

我正在使用 Ubuntu 14.10 X86_64 系统和以下软件:

我在这个路径下用django1.8创建了一个项目:

/var/www/html/koorimeo

我注意到 django-admin startproject 默认会生成一个 wsgi.py 文件,我没有更改它的内容。

我在官方文档(How to use Django with Apache and mod_wsgi)下配置了apache2 详情:

我 mod 设置为 000-default.conf 因为我不想设置另一个虚拟主机。这是我添加的内容:

#000-default.conf
<VirtualHost *:80>
...
<Directory /var/www/html/koorimeo/koorimeo>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>
...
</VirtualHost>

之后我在 apache2.conf:

中声明了 WSGIAlias 和 WSGIPythonPath
#apache2.conf
#I want to leave "/" for other use...
WSGIScriptAlias /koorimeo /var/www/html/koorimeo/koorimeo/wsgi.py
WSGIPythonPath /var/www/html/koorimeo/koorimeo

完成文件设置后,我重新启动了apache2服务并登录到127.0.0.1/koorimeo,它返回了500错误信息... 我查找了错误日志文件并得到了这些错误消息:

bing@k-lab:/var/log/apache2$ tail error.log
[Sat Apr 25 14:35:31.214661 2015] [:notice] [pid 16997:tid 140004070725504] mod_python: Creating 8 session mutexes based on 6 max processes and 25 max threads.
[Sat Apr 25 14:35:31.214705 2015] [:notice] [pid 16997:tid 140004070725504] mod_python: using mutex_directory /tmp 
[Sat Apr 25 14:35:31.232634 2015] [:warn] [pid 16997:tid 140004070725504] mod_wsgi: Compiled for Python/3.4.0.
[Sat Apr 25 14:35:31.232682 2015] [:warn] [pid 16997:tid 140004070725504] mod_wsgi: Runtime using Python/2.7.6.
[Sat Apr 25 14:35:31.232766 2015] [mpm_event:notice] [pid 16997:tid 140004070725504] AH00489: Apache/2.4.7 (Ubuntu) mod_python/3.3.1 Python/2.7.6 mod_wsgi/3.4 configured -- resuming normal operations
[Sat Apr 25 14:35:31.232786 2015] [core:notice] [pid 16997:tid 140004070725504] AH00094: Command line: '/usr/sbin/apache2'
[Sat Apr 25 14:35:32.234958 2015] [core:notice] [pid 16997:tid 140004070725504] AH00051: child pid 18325 exit signal Aborted (6), possible coredump in /etc/apache2
[Sat Apr 25 14:35:32.235070 2015] [core:notice] [pid 16997:tid 140004070725504] AH00051: child pid 18326 exit signal Aborted (6), possible coredump in /etc/apache2
[Sat Apr 25 14:35:34.041184 2015] [:error] [pid 18599:tid 140003960342272] [client 127.0.0.1:51134] mod_wsgi (pid=18599): Target WSGI script '/var/www/html/koorimeo/koorimeo/wsgi.py' cannot be loaded as Python module., referer: http://localhost/
[Sat Apr 25 14:35:34.041279 2015] [:error] [pid 18599:tid 140003960342272] [client 127.0.0.1:51134] mod_wsgi (pid=18599): Exception occurred processing WSGI script '/var/www/html/koorimeo/koorimeo/wsgi.py'., referer: http://localhost/

根据这些消息,我发现 apache2 找不到这个 module:

/var/www/html/koorimeo/wsgi.py

所以我复制了这个路径并试图弄清楚这个文件是否存在:

bing@k-lab:/var/log/apache2$ ls /var/www/html/koorimeo/koorimeo/wsgi.py -l

系统返回了这条消息,告诉我文件确实存在...

-rw-rw-r-- 1 bing bing 389  4月 25 14:21 /var/www/html/koorimeo/koorimeo/wsgi.py

而且我还确保我已经安装了 libapache2-mod-wsgi-py3,我确实在正确的位置找到了 wsgi.so。

我在 modes-enable 中找到 wsgi.load 并将 wsgi.so 指向正确的位置:

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so

所以...我很困惑...

请告诉我为什么 apache2 找不到这个 wsgi.py 文件?

如果您不使用 Apache,请从 Apache 中删除 mod_python。

您的 mod_wsgi 模块是为 Python 3.4.0 编译的,但是 mod_python 是为 2.7.6 编译的。因为 mod_python 使用的是不同的版本,所以它覆盖了所使用的 Python 版本,这将阻止 mod_wsgi 工作。

从以下位置开始阅读文档中的许多部分: