django - Mod_wsgi 无法加载 django.core.handlers.wsgi

标签 django apache2 ubuntu-12.04 mod-wsgi

好吧,经过 5-6 个小时的尝试,我放弃了。我在网上搜索,尝试了所有建议的解决方案,但没有解决我的问题。

目标:在我的 Ubuntu 12.04 VPS 上设置 Django。

问题: Exception occurred processing WSGI script [...] ImportError: No module named django.core.handlers.wsgi在/etc/log/apache2/error.log 中。

尝试的解决方案: 1) 将 site-packages 目录附加到 Django 的 wsgi.py 文件中的 sys 路径,2) 重新安装 mod_wsgi,3) 确保为与 Django 安装的 Python 版本相同的 Python 版本编译 mod_wsgi,4) chmod 777 用于站点包目录。

环境: Ubuntu 12.04 VPS,在 virtualenv 中安装 Django,Python 版本 2.7.3,Django 版本 1.6.1,mod_wsgi 构建自 mod_wsgi-3.4.tar.gz .

完整的错误消息:

mod_wsgi (pid=23691): Exception occurred processing WSGI script '/var/www/mySite/djangoSite/djangoSite/wsgi.py'.
Traceback (most recent call last):
   File "/var/www/mySite/djangoSite/djangoSite/wsgi.py", line 7, in <module>
     import django.core.handlers.wsgi
ImportError: No module named django.core.handlers.wsgi
mod_wsgi (pid=23691): Target WSGI script '/var/www/mySite/djangoSite/djangoSite/wsgi.py' cannot be loaded as Python module.

mod_wsgi (pid=23691): Exception occurred processing WSGI script '/var/www/mySite/djangoSite/djangoSite/wsgi.py'.
Traceback (most recent call last):
   File "/var/www/mySite/djangoSite/djangoSite/wsgi.py", line 7, in <module>
     import django.core.handlers.wsgi
ImportError: No module named django.core.handlers.wsgi

来自可用站点的 Conf 文件:
<VirtualHost *:80>
    ServerAdmin admin@mysite.com
    ServerName mysite.com

    DocumentRoot /var/www/mysite.com/djangoSite

    WSGIDaemonProcess djangoSite python-path=/var/www/mysite.com/djangoSite:~/Envs/myEnv/lib/python2.7/site-packages
    WSGIProcessGroup djangoSite
    WSGIScriptAlias / /var/www/mysite.com/djangoSite/djangoSite/wsgi.py

    Alias /static/ /var/www/mysite.com/djangoSite/static/

    <Directory /var/www/mysite.com/djangoSite/static>
        Order deny,allow
        Allow from all
    </Directory>

    <Directory /var/www/mysite.com/djangoSite/djangoSite>
        <Files wsgi.py>
            Order deny,allow
            Allow from all
        </Files>
    </Directory>
</VirtualHost>

wsgi.py:
import os
import sys

sys.path.append('/var/www/mysite.com/djangoSite/')
sys.path.append('/var/www/mysite.com/djangoSite/djangoSite/')

activate_this = '/root/Envs/myenv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

os.environ['DJANGO_SETTINGS_MODULE'] = 'djangoSite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

网站结构
/var/www/
-- mysite.com
  -- djangoSite
    -- manage.py
    -- djangoSite
      -- settings.py, wsgi.py etc.

最佳答案

在您的 wsgi.py 中,尝试添加以下内容以激活虚拟环境:

import os
import sys

sys.path.append('/Path_To/Virtual_Env/Project_Dir/')

#This is important if multiple apps are running (instead of setdefault)
os.environ["DJANGO_SETTINGS_MODULE"] = "app_name.settings"

activate_this = '/Path_To/Virtual_Env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

在您的 apache 配置中,您主要只需要(不需要守护进程):
WSGIScriptAlias / /var/www/mysite.com/djangoSite/djangoSite/wsgi.py
Alias /static/ /var/www/mysite.com/djangoSite/static/

见自创建虚拟主机 this link的部分

关于django - Mod_wsgi 无法加载 django.core.handlers.wsgi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20792410/

相关文章:

python - 关于 django form.errors 的问题,获取原始错误消息

python - 如何使用 django Rest 框架在网页上打印 bash 脚本的结果

Django、PayPal IPN 和用户名——概念问题

Django:在没有端口的服务器上运行 Django 应用程序?

linux - 设置文件夹所有者组

python - Django 断管消息

windows - 如何以管理员身份启动apache2.4服务

apache - 为什么我不能让 Apache2 mod_dumpio 在 Lucid Lynx Ubuntu 下工作?

linux - 如何在 ubuntu 的 .desktop 文件中动态分配家庭用户名?

ubuntu-12.04 - 尝试编译使用 SFML 库的 c++ 项目时出现 undefined reference 错误