【问题标题】:Setting up django on apache (mod_wsgi, virtualenv)在 apache 上设置 django (mod_wsgi, virtualenv)
【发布时间】:2012-06-09 12:35:09
【问题描述】:

我是第一次将我的 django 网站投入生产,请原谅我的无知。

我正在尝试将我的 django 网站放在 apache 上。我已经阅读了有关 mod_wsgi 的文档,并尝试了那个简单的 Hello world,所以它配置好了。我遇到的问题似乎与使用 virtualenvs 有关。我想正确设置一些东西,包括 virtualenvs 和一切,以便为未来的网站做好准备。

现在解决问题。

我在 apache 日志中遇到的错误是:

No module named django.core.handlers.wsgi

所以它似乎没有正确读取我的 virtualenvs。

这是我的 wsgi 脚本:

import os
import sys
import site
site.addsitedir('/home/user/.virtualenvs/myapp/lib/python2.7/site-packages')

path = '/home/user/django/myapp/myapp'
if path not in sys.path:
    sys.path.append(path)

sys.stdout = sys.stderr
print sys.path

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

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

这是来自 apache 的错误日志。我打印了 sys.path,这样你就可以看到它的样子了。

[Tue Jun 05 14:54:07 2012] [error] ['/usr/lib/python27.zip', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages/PIL', '/usr/lib/python2.7/site-packages/setuptools-0.6c11.egg-info', '/home/user/.virtualenvs/myapp/lib/python2.7/site-packages', '/home/user/django/myapp/myapp']
[Tue Jun 05 14:54:07 2012] [error] [client 127.0.0.1] mod_wsgi (pid=1039): Target WSGI script '/srv/http/wsgi_scripts/myapp.wsgi' cannot be loaded as Python module.
[Tue Jun 05 14:54:07 2012] [error] [client 127.0.0.1] mod_wsgi (pid=1039): Exception occurred processing WSGI script '/srv/http/wsgi_scripts/myapp.wsgi'.
[Tue Jun 05 14:54:07 2012] [error] [client 127.0.0.1] Traceback (most recent call last):
[Tue Jun 05 14:54:07 2012] [error] [client 127.0.0.1]   File "/srv/http/wsgi_scripts/myapp.wsgi", line 17, in <module>
[Tue Jun 05 14:54:07 2012] [error] [client 127.0.0.1]     import django.core.handlers.wsgi
[Tue Jun 05 14:54:07 2012] [error] [client 127.0.0.1] ImportError: No module named django.core.handlers.wsgi

如果您有任何建议或已经遇到类似问题,请提供帮助。

谢谢

【问题讨论】:

    标签: django apache mod-wsgi virtualenv


    【解决方案1】:

    您还没有将实际的 virtualenv 站点包目录添加到组合中。试试:

    import site
    site.addsitedir('/path/to/your/virtualenv/lib/python2.X/site-packages')
    # Where `X` is the specific version
    

    【讨论】:

    • 其实我是这样做的,我只是把问题的格式错误,所以显示为一个普通的句子,我会改变它,对不起
    【解决方案2】:

    对于任何可能与我有类似问题的人。您需要检查存储 virtualenv 的目录的整个路径权限。

    我检查了主目录并更改了权限,但忘记将权限更改为我的用户目录并修复了问题。

    希望这会有所帮助。

    【讨论】:

    • 您使用了哪些权限? 775 对于所有目录?
    猜你喜欢
    • 1970-01-01
    • 2014-05-11
    • 2017-02-18
    • 2014-03-02
    • 2012-02-23
    • 2015-11-07
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    相关资源
    最近更新 更多