我正在使用带有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
答案 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