sys.path无法在apache上找到设置模块

时间:2010-12-09 21:26:41

标签: django mod-wsgi

我正在使用带有mod_wsgi和django的虚拟环境。

我将虚拟环境设置为'/ home / project_name'

我找不到apache来找到我的settings.py。有任何想法吗?

我的wsgi看起来像:

import os
import sys
# put the Django project on sys.path
path = '/home/project_name/lib/python2.6/site-packages'
if path not in sys.path:
    sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'project_name.settings'
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()

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

    WSGIScriptAlias / /home/project_name/releases/current/project_name/wsgi-scripts/project_name.wsgi
    <Directory /home/project_name/releases/current/project_name/wsgi-scripts>
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog /var/log/apache2/error.log
    LogLevel warn
    CustomLog /var/log/apache2/access.log combined

2 个答案:

答案 0 :(得分:2)

您想要附加到sys.path的路径(如果它不存在)是您的django项目文件夹的文件夹。虽然我没有使用所有这些来查找您的特定问题,但我一直在使用WSGI设置脚本来减轻您所拥有的任何硬编码路径,并使设置/部署更加简单。我的项目主文件夹下有一个名为'apache'的子目录,只有一个文件django.wsgi。如下......

/djangoproject
    __init__.py
    settings.py
    ...
    /apache
        django.wsgi

在django.wsgi中,通过简单地更改设置模块字符串前缀,下面的脚本可以移植到具有相同apache项目文件夹的任何其他项目...

import os
import sys

apache_dir = os.path.dirname(__file__)
project = os.path.dirname(apache_dir)
workspace = os.path.dirname(project)
if workspace not in sys.path:
    sys.path.append(workspace)

os.environ['DJANGO_SETTINGS_MODULE'] = 'djangoproject.settings'
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()

Apache vhosts设置如下......

...

WSGIScriptAlias / /var/www/sitename/djangoproject/apache/django.wsgi
WSGIDaemonProcess djp_wsgi user=myusername group=admin processes=1 threads=10
WSGIProcessGroup djp_wsgi

<Directory /var/www/sitename/djangoproject/apache/>
    Order deny,allow
    Allow from all
</Directory>

...

希望有所帮助,我从未对此配置有任何问题。另外一个注意事项,文件夹名称apache和文件名django.wsgi可以被命名为任何你想要的,这些特定的名称就是我选择的。

答案 1 :(得分:0)

可能有多种原因,主要与权限有关。观看此演示文稿并阅读幻灯片以了解可能性。

http://code.google.com/p/modwsgi/wiki/WhereToGetHelp?tm=6#Conference_Presentations