我一直在整个网站上寻找解决方案,但一直没有找到。我有一个带有 Apache 2.2.15、Django 1.6 和 mod_wsgi 3.2 的 CentOS 6.4 服务器。我使用 Apache 来显示静态文件和 mod_wsgi 来显示 Django 内容。
/srv
由于这个页面,我将 Django 项目文件放在了目录中。
当我运行 Django 开发服务器时,我编写的测试页面正确显示。但是,当我启动我的 Apache 服务器并访问 127.0.0.1 时,我收到 403 Forbidden 错误。
django.wsgi(在 /srv/mysite 中)
import os
import sys
envpath = '/usr/lib/python2.6/site-packages'
pwd = os.path.dirname(os.path.abspath(__file__))
os.chdir(pwd)
sys.path = [env] + sys.path
os.environ['PYTHON_EGG_CACHE'] = '/srv/mysite/.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
site.addsitedir(envpath)
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandlers()
httpd.conf
WSGIScriptAlias / /srv/mysite/django.wsgi
WSGIPythonPath /srv/mysite
<more aliases and tags in order to get the right static files to show>
在httpd.conf
文件中,列出的用户和组是默认的apache
。我在ls -l
目录上运行了 a /srv
,它的所有者和组被列为root
. 因此,我运行了sudo chown -R apache:apache /srv/mysite
它更改了目录和所有子目录以apache
用作所有者和组。
但是,无论我如何谷歌或尝试,我都无法克服这个 403 错误。
编辑:
我发现当我禁用 SELinux 并且文件中的WSGIPythonPath
变量是时,它会导致 500 Internal Server 错误。但是,当我将其更改为 时,我的网站会正确显示。我很好奇为什么会这样。http.conf
django.wsgi
wsgi.py
无论如何,由于这将是一台生产机器,我更喜欢让 SELinux 保持打开状态并弄清楚如何获得适当的权限。
编辑2:
我已经编辑了我的django.wsgi
文件(在上面更改)ala this link
编辑 3:
我尝试将我的项目文件移动到我的 /home/ 文件夹中。我一直在尝试django.wsgi
但wsgi.py
仍然无法克服 403 Forbidden 错误。我认为这最初是/srv
目录的权限问题,但似乎情况并非如此......我试图弄清楚这一点,但没有任何效果。
编辑4:
我决定暂时只保留开发服务器......但我仍然需要让它工作,我已经走到了尽头。有没有人可以帮助我?