Apache mod_wsgi错误:禁止访问,你没有权限访问/这个服务器
我正在使用Ubuntu 10.04操作系统。
我在这个路径下创建了一个django项目:/home/wong2/Code/python/django2/
,项目名叫atest
。
然后我在同一个文件夹里创建了一个wsgi文件,叫setting.wsgi
。
这个setting.wsgi
文件的内容是:
import os
import sys
path = '/home/wong2/Code/python/django2'
if path not in sys.path:
sys.path.append(path)
os.environ["DJANGO_SETTINGS_MODULE"] = "atest.settings"
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
接下来,我在我的httpd.conf文件中添加了以下内容:
<VirtualHost *:80>
ServerName localhost
WSGIScriptAlias / /home/wong2/Code/python/django2/setting.wsgi
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
<Directory "/home/wong2/Code/python/django2/atest">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
问题是,当我访问http://localhost时,出现了以下提示:
禁止访问
你没有权限访问这个服务器上的/。
非常感谢。
5 个回答
我也遇到过同样的问题,原因是文件权限限制。
默认情况下,你的个人文件夹的设置是:
ls -l /home/
drwx------ 36 user user 12288 Nov 28 20:56 user
这意味着除了你自己,其他人连这个文件夹都无法查看。
我通过给这个文件夹添加执行权限解决了我的问题。
chmod o+x /home/user/
ls -l /home/
drwx-----x 36 user user 12288 Nov 28 20:56 user
在Django 1.5及以上版本中,你应该按照文档中推荐的方法来操作:
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /path/to/mysite.com
<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/modwsgi/
第二个目录块的位置和你的WSGI脚本文件安装的位置不匹配。不过,把WSGI脚本文件放在源代码或其他敏感文件的同一个地方,或者子目录里,是非常不好的做法。你应该把它放在一个自己的子目录里。这样:
WSGIScriptAlias / /home/wong2/Code/python/django2/atest/apache/setting.wsgi
<Directory "/home/wong2/Code/python/django2/atest/apache">
Order allow,deny
Allow from all
</Directory>
所以,在'atest'目录下创建一个'apache'子目录。把'setting.wsgi'文件移动到这个'apache'子目录里,并根据上面的内容修改配置。
你的问题也可能是因为你主目录的权限设置太严格,导致Apache无法访问里面的内容。
可以去看看:
http://code.google.com/p/modwsgi/wiki/WhereToGetHelp?tm=6#Conference_Presentations
这个链接解释了权限问题,以及像代码和WSGI脚本文件应该放在哪里的问题。
另外也可以阅读: