Apache mod_wsgi错误:禁止访问,你没有权限访问/这个服务器

16 投票
5 回答
61463 浏览
提问于 2025-04-16 10:40

我正在使用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 个回答

6

我也遇到过同样的问题,原因是文件权限限制。

默认情况下,你的个人文件夹的设置是:

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

10

在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/

17

第二个目录块的位置和你的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脚本文件应该放在哪里的问题。

另外也可以阅读:

http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango

撰写回答