Apache Wsgi 虚拟主机、Django 虚拟环境 "no module named django.core.wsgi"
Apache Wsgi virtualHost, Django virtual env "no module named django.core.wsgi"
我以前看过很多与我的问题相关的消息,但是没有答案可以消除我的“500 服务器内部错误”,所以我尝试 post 我的 conf 寻求帮助。
错误信息:
[Fri Jun 24 17:05:23.631270 2016] [authz_core:error] [pid 15187:tid 140715758237440] [client 127.0.0.1:47873] AH01630: client denied by server configuration: /home/www/waves/
[Fri Jun 24 17:05:23.631568 2016] [:error] [pid 15186:tid 140715648984832] ['/home/marc/.virtualenvs/waves/lib/python2.7/site-packages', '/home/www/waves', '/usr/local/lib/python2.7/dist-packages/setuptools-20.6.7-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
[Fri Jun 24 17:05:23.631660 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] mod_wsgi (pid=15186): Target WSGI script '/home/www/waves/waves_services/wsgi.py' cannot be loaded as Python module.
[Fri Jun 24 17:05:23.631675 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] mod_wsgi (pid=15186): Exception occurred processing WSGI script '/home/www/waves/waves_services/wsgi.py'.
[Fri Jun 24 17:05:23.631686 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] Traceback (most recent call last):
[Fri Jun 24 17:05:23.631710 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] File "/home/www/waves/waves_services/wsgi.py", line 18, in
[Fri Jun 24 17:05:23.631731 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] from django.core.wsgi import get_wsgi_application
[Fri Jun 24 17:05:23.631743 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] ImportError: No module named django.core.wsgi
我的 django 应用程序无法在 apache wsgi 模式下加载,我尝试了很多解决方案但仍然无法正常工作。这是我的 confs 文件:
虚拟主机:
<VirtualHost *:80>
ServerName dev.www.waves.com
ServerAlias www.waves.com
ServerAdmin webmaster@waves.com
DocumentRoot /home/www/waves
Alias media/ /home/www/waves/media/
Alias static/ /home/www/waves/static/
<Directory /home/www/waves>
Require all granted
</Directory>
<Directory /home/www/waves/staticfiles>
Require all granted
</Directory>
<Directory /home/www/waves/media>
Require all granted
</Directory>
WSGIDaemonProcess waves python-path=/home/marc/.virtualenvs/waves/lib/python2.7/site-packages:/home/www/waves
WSGIProcessGroup waves
WSGIScriptAlias /waves /home/www/waves/waves_services/wsgi.py
<Directory /home/www/waves/waves_services>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
<Directory /home/marc/.virtualenvs/waves/lib/python2.7/>
Require all granted
</Directory>
我的wsgy.py内容:
from __future__ import unicode_literals
import os
import sys
import site
print sys.path
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "waves_services.settings.production")
application = get_wsgi_application()
我追踪到apache错误日志中的sys.path内容,以及sys.path中的virtualenv。
Django 安装在这个 virtualenv 中(我首先尝试安装 django 'globally' 但错误只是移动到第一个 'application specific' import : environ 包含在我的设置文件中。
虚拟环境是使用 virtualenvwrapper 创建的(有影响吗?)
我也尝试更改 virtualenv 文件的所有权,也更改了 'execution' 标志,但我仍然得到这个... 500 服务器错误。
如果能了解正在发生的事情,我将不胜感激!
谢谢
需要检查的几件事。
- 确保 virtualenv 有 django (
pip freeze | grep django
)
- 通过检查文件夹权限检查 apache 用户是否可以访问 virtualenv
如果您使用的是 apache 2.4 + 更改以下内容
Order deny,allow
Allow from all
到
Require all granted
@marcoooo (OP) 建议的编辑:不要将 virtualenv 基本目录放在任何没有 'x' 标志的主目录下,apache www-data用户也将无法激活 virtualenv....非常感谢 e4c5 的帮助,拯救了我的一天(和几夜)
我以前看过很多与我的问题相关的消息,但是没有答案可以消除我的“500 服务器内部错误”,所以我尝试 post 我的 conf 寻求帮助。
错误信息:
[Fri Jun 24 17:05:23.631270 2016] [authz_core:error] [pid 15187:tid 140715758237440] [client 127.0.0.1:47873] AH01630: client denied by server configuration: /home/www/waves/
[Fri Jun 24 17:05:23.631568 2016] [:error] [pid 15186:tid 140715648984832] ['/home/marc/.virtualenvs/waves/lib/python2.7/site-packages', '/home/www/waves', '/usr/local/lib/python2.7/dist-packages/setuptools-20.6.7-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
[Fri Jun 24 17:05:23.631660 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] mod_wsgi (pid=15186): Target WSGI script '/home/www/waves/waves_services/wsgi.py' cannot be loaded as Python module.
[Fri Jun 24 17:05:23.631675 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] mod_wsgi (pid=15186): Exception occurred processing WSGI script '/home/www/waves/waves_services/wsgi.py'.
[Fri Jun 24 17:05:23.631686 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] Traceback (most recent call last):
[Fri Jun 24 17:05:23.631710 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] File "/home/www/waves/waves_services/wsgi.py", line 18, in
[Fri Jun 24 17:05:23.631731 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] from django.core.wsgi import get_wsgi_application
[Fri Jun 24 17:05:23.631743 2016] [:error] [pid 15186:tid 140715648984832] [remote 127.0.0.1:50665] ImportError: No module named django.core.wsgi
我的 django 应用程序无法在 apache wsgi 模式下加载,我尝试了很多解决方案但仍然无法正常工作。这是我的 confs 文件: 虚拟主机:
<VirtualHost *:80>
ServerName dev.www.waves.com
ServerAlias www.waves.com
ServerAdmin webmaster@waves.com
DocumentRoot /home/www/waves
Alias media/ /home/www/waves/media/
Alias static/ /home/www/waves/static/
<Directory /home/www/waves>
Require all granted
</Directory>
<Directory /home/www/waves/staticfiles>
Require all granted
</Directory>
<Directory /home/www/waves/media>
Require all granted
</Directory>
WSGIDaemonProcess waves python-path=/home/marc/.virtualenvs/waves/lib/python2.7/site-packages:/home/www/waves
WSGIProcessGroup waves
WSGIScriptAlias /waves /home/www/waves/waves_services/wsgi.py
<Directory /home/www/waves/waves_services>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
<Directory /home/marc/.virtualenvs/waves/lib/python2.7/>
Require all granted
</Directory>
我的wsgy.py内容:
from __future__ import unicode_literals
import os
import sys
import site
print sys.path
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "waves_services.settings.production")
application = get_wsgi_application()
我追踪到apache错误日志中的sys.path内容,以及sys.path中的virtualenv。 Django 安装在这个 virtualenv 中(我首先尝试安装 django 'globally' 但错误只是移动到第一个 'application specific' import : environ 包含在我的设置文件中。 虚拟环境是使用 virtualenvwrapper 创建的(有影响吗?)
我也尝试更改 virtualenv 文件的所有权,也更改了 'execution' 标志,但我仍然得到这个... 500 服务器错误。
如果能了解正在发生的事情,我将不胜感激! 谢谢
需要检查的几件事。
- 确保 virtualenv 有 django (
pip freeze | grep django
) - 通过检查文件夹权限检查 apache 用户是否可以访问 virtualenv
如果您使用的是 apache 2.4 + 更改以下内容
Order deny,allow Allow from all
到
Require all granted
@marcoooo (OP) 建议的编辑:不要将 virtualenv 基本目录放在任何没有 'x' 标志的主目录下,apache www-data用户也将无法激活 virtualenv....非常感谢 e4c5 的帮助,拯救了我的一天(和几夜)