Apache2 无法加载 wsgi.py
Apache2 can not load wsgi.py
我正在使用 Ubuntu 14.10 X86_64 系统和以下软件:
- python3.4
- apache2
- libapache2-mod-wsgi-py3
- django1.8
我在这个路径下用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 工作。
从以下位置开始阅读文档中的许多部分:
我正在使用 Ubuntu 14.10 X86_64 系统和以下软件:
- python3.4
- apache2
- libapache2-mod-wsgi-py3
- django1.8
我在这个路径下用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 工作。
从以下位置开始阅读文档中的许多部分: