Apache mod_wsgi错误:禁止您无权访问此服务器上的/

won*_*ng2 15 python apache django mod-wsgi wsgi

我正在使用Ubuntu 10.04.
我在/home/wong2/Code/python/django2/named 下创建了一个django项目,atest
setting.wsgi在同一目录下创建了一个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()
Run Code Online (Sandbox Code Playgroud)

这是我添加到我的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>
Run Code Online (Sandbox Code Playgroud)

问题是,当我访问http:// localhost时,它说

被禁止

您无权访问此服务器上的/.

非常感谢.

Gra*_*ton 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>
Run Code Online (Sandbox Code Playgroud)

因此,在'atest'下创建'apache'子目录.将'setting.wsgi'移动到'apache'子目录中,并将config更改为上面的.

您的问题也可能是由于主目录上的限制性权限导致的,因为Apache无法在内部看到.

去观看:

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

因为它解释了这些权限问题以及诸如粘贴代码和WSGI脚本文件的问题.

另请阅读:

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


neo*_*gio 9

使用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>
Run Code Online (Sandbox Code Playgroud)

https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/modwsgi/


小智 6

由于受限制的文件权限,我遇到了同样的问题.

默认情况下,主文件夹用户具有以下设置:

ls -l /home/
Run Code Online (Sandbox Code Playgroud)

drwx ------ 36位用户12288 11月28日20:56用户

这意味着除了你自己之外没有人能够浏览那个文件夹.

添加执行选项到文件夹修复了我的问题

chmod o+x /home/user/
ls -l /home/
Run Code Online (Sandbox Code Playgroud)

drwx ----- x 36用户user 12288 11月28日20:56用户