【问题标题】:Django + Apache + Mod_wsgi cuasing 500 Internal Server Error (log attached)Django + Apache + Mod_wsgi 导致 500 内部服务器错误(附加日志)
【发布时间】:2015-06-09 08:54:08
【问题描述】:

Django WSGI Script Won't load due to a Python issue

经过一天的研究,仍然无法解决问题。 服务器在线,正在使用 virtulenv 的站点 Windows 8-64bit, python34, Wamp server apache 64bit

内部配置:

Listen 8080
NameVirtualHost 127.0.0.1:8080
<VirtualHost *:8080> 
ServerAdmin admin@hotmail.com
ServerName 192.168.0.101:8080 
DocumentRoot "C:/wamp/www/venv/testweb10/testweb10"  
</VirtualHost>

WSGIScriptAlias / "C:/wamp/www/venv/testweb10/testweb10/wsgi.py"
WSGIPythonPath "C:/wamp/www/venv/Lib/site-packages"

<Directory "C:/wamp/www/venv/testweb10">
        <Files wsgi.py>
            Order deny,allow
            Require all granted
        </Files>
</Directory>

Settings.py

DEBUG = True

ALLOWED_HOSTS = ['testweb10']

主机

127.0.0.1       testweb10

我怀疑是不是python兼容性问题

用户变量路径:

C:\WINDOWS\system32;C:\Python34;C:\Python34\python.exe;C:\Python34\Scripts;C:\Python34\Lib\site-packages\django\bin;

请帮忙

【问题讨论】:

  • mod_wsgi 尝试解析您的 wsgi.py 脚本但失败。该文件的内容是什么?
  • import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testweb10.settings") application = get_wsgi_application()
  • 谢谢 Saex,你提醒了我。
  • os.environ["DJANGO_SETTINGS_MODULE"] = "testweb10.settings"
  • 但仍然得到相同的错误结果

标签: python django apache virtualenv


【解决方案1】:

对于有同样问题的人:

一些建议(也给我自己):

每个组件的版本都很重要

1) 以干净的方式安装 Appache 或 Wamp 服务器。确保删除其旧注册表。

2) 获取 Mod_WSGI 并仔细按照安装说明进行操作!!!

2.5) 测试 Mod_WSGI 是否可以在没有 Django 的情况下正常工作

3) 最后一步是安装 python、Django,并设置环境和配置。

4) 测试和部署

【讨论】:

    【解决方案2】:

    最终以下似乎适用于 Django 1.8

    import site
    

    site.addsitedir("C:/Python34/Lib/site-packages")

    import os
    import sys
    sys.path.append("C:/wamp/www/venv/testweb10/testweb10")
    
    from django.core.wsgi import get_wsgi_application
    
    os.environ["DJANGO_SETTINGS_MODULE"] = "testweb10.settings"
    
    application = get_wsgi_application()
    

    但是现在出现错误:( [mpm_winnt:notice] [pid 3788:tid 688] AH00455: Apache/2.4.9 (Win64) mod_wsgi/4.4.10 Python/3.4.3 PHP/5.5.12 已配置——恢复正常操作

    【讨论】:

      【解决方案3】:

      WSGIPythonPath 必须包含项目的根目录。

      用于指定额外的目录来搜索 Python 模块。 如果指定了多个目录,它们应该用 ':' 如果使用类似 UNIX 的系统,或 ';'如果使用 Windows。

      WSGIPythonPath = "C:/wamp/www/venv/testweb10/testweb10;C:/wamp/www/venv/Lib/site-packages"
      

      【讨论】:

      • 使用windows有点不同
      【解决方案4】:

      您的 wsgi.py 中是否引用了您的 virtualenv?这是我在 Linux 上使用的一个模板,例如:

      import site
      site.addsitedir('/home/mysite/venv/lib/python2.7/site-packages')
      import os
      import sys
      sys.path.append('/home/mysite/mysite')
      os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
      
      import django.core.handlers.wsgi
      
      application = django.core.handlers.wsgi.WSGIHandler()
      

      这是 Django 1.6 顺便说一句。 Django 1.7 在 wsgi.py 中有一些不同

      对于 Django 1.7,最后两行是:

      from django.core.wsgi import get_wsgi_application
      application = get_wsgi_application()
      

      【讨论】:

      • 除此之外,请确保您使用适当的安装程序来安装mod_wsgi。在安装了 Python 2 和 3 的标准系统中,pip install mod_wsgi 将为 Python 2.x 执行安装,而pip3 install mod_wsgi 将为 3.x 执行相同操作
      • Windows 下不支持 pip 可安装 mod_wsgi。对于 Windows 用户需要使用特殊的预编译版本,除非他们想自己从源代码编译。见github.com/GrahamDumpleton/mod_wsgi/blob/develop/win32/…
      猜你喜欢
      • 2017-09-05
      • 2012-08-19
      • 2017-07-15
      • 1970-01-01
      • 2015-02-12
      • 2018-06-07
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多