【问题标题】:apache wsgi django path issue frustrationapache wsgi django 路径问题挫折
【发布时间】:2016-01-23 20:24:53
【问题描述】:

我已经阅读了类似的问题/答案,但我无法解决这种情况。所以我已经安装了 WSGI 并想从 Apache 提供我的 django 应用程序。

我最初所做的是使用 virtualenv 创建包含 python 相关内容的文件夹 testing。所以我做到了

  virtualenv environment

我的虚拟主机文件如下所示:

<VirtualHost *:8001>
WSGIDaemonProcess myapp python-path=/var/www/vhosts/myapp.com/:/var/www/vhosts/myapp.com/environment/lib/python2.7/:/var/www/vhosts/myapp.com/environment/lib/python2.7/sites-available
WSGIScriptAlias / /var/www/vhosts/myapp/testing/wsgi.py
...
...

我的 wsgi.py 是:

 import os

 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testing.settings")

 from django.core.wsgi import get_wsgi_application

 application = get_wsgi_application()

访问网页后,我收到服务器内部错误,error.log 基本上显示 2 条错误消息:

 [wsgi:error] [pid 31165] [client 192.168.0.3:31337] mod_wsgi (pid 31165): Target WSGI script '/var/www/vhosts/myapp.com/testing/wsgi.py' cannot be loaded as Python Module

在几行结束后:

 [wsgi:error] [pid 31165] [client 192.168.0.3:31337] mod_wsgi (pid 31165): ImportError: Could not import settings 'testing.settings' (is it on sys.path? Is there an import error in the settings file?)

我发现关于Target WSGI script cannot be loaded as Python module 的第一个错误消息,但是我无法解决问题。我得到的是这个错误并没有阻止 Apache 尝试加载我的 python (django) 项目,因为下一个错误是我认为导致 500 响应的原因。对于第二个错误,我发现这是添加路径的问题(我对我的 vhost 文件所做的事情!?)

我尝试了其他解决方案,例如在我的 apache.conf 中添加 WSGIPythonPath,但没有奏效。

我的wsgi.py文件如下:

 import os
 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testing.settings")

 from django.core.wsgi import get_wsgi_application

 application = get_wsgi_application()

我也试过添加

  import sys
  os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
  sys.path.append('/var/www/vhosts/myapp/testing')
  import mysite.settings

没用。

【问题讨论】:

  • 如果您在目录 /var/www/vhosts/myapp/testing/ 中执行python wsgi.py,是否会收到任何错误消息?
  • 是的。我收到与 Import-Error 相同的错误。这绝对是一个路径问题,但我不明白我做错了什么.. :(
  • 如果您有更新版本的 wsgi.py(带有sys.path.append 等),最好编辑问题。此外,拥有完整的堆栈回溯可能会有所帮助。

标签: python django apache path mod-wsgi


【解决方案1】:

您可以尝试将 wsgi.pysettings.py 移至 /var/www/vhosts/myapp/testing/mysite

WSGIPythonPath /var/www/vhosts/myapp/testing
<VirtualHost *:8000>

    WSGIScriptAlias / /var/www/vhosts/myapp/testing/mysite/wsgi.py
    # WSGIApplicationGroup is needed to prevent some problem?
    WSGIApplicationGroup %{GLOBAL}
</VirtualHost>

wsgi.py 文件中

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
sys.path.append('/var/www/vhosts/myapp/testing')
import mysite.settings

我想我在升级 django 时遇到了类似的问题。在我重新定位 settings.pywsgi.py

后,事情开始起作用了

【讨论】:

  • 感谢您的回答。虽然没有工作:(相同的错误消息。
  • @user3124171 我在wsgi.py中也放了一些相关的行,我忘了放在这里
  • 这些行我也在另一个线程上找到了它们。但是这些对我不起作用......我不知道发生了什么:(我被诅咒了
猜你喜欢
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 2011-03-04
  • 2011-11-24
  • 2017-04-02
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多