【问题标题】:Django, mod_wsgi--daemon mode, 403 Forbidden, works when in /var/www/htmldjango,mod_wsgi--daemon mode,403 Forbidden,在/var/www/html下工作
【发布时间】:2014-04-20 22:15:10
【问题描述】:

当我将 /home/django/mysite 移动到 /var/www/html/mysite 时, chown -R阿帕奇:阿帕奇它的作品。但是留在主目录中我得到 403 禁止。

我确实花了 6 个小时来尝试让它发挥作用。巨大的进步让我看到它在 /var/www/html 中工作,因为我知道我所有的“配置”设置都是正确的。

这是我的 httpd.conf

(必须添加第一个设置以停止 503 内部服务器错误)

WSGISocketPrefix /var/run/wsgi

<VirtualHost 208.115.206.227:80>
 WSGIDaemonProcess django user=django group=django python-path=/home/django/mysite
 WSGIProcessGroup django

     ServerAdmin webmaster@mktrn.net
     ServerName endor.mktrn.net
    WSGIScriptAlias / /home/django/mysite/mysite/wsgi.py
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
</Directory>
<Directory /home/django/mysite/mysite>
<Files wsgi.py>
    Order allow,deny
    Allow from all
</Files>
    </Directory>
</VirtualHost>

同样,如果我只是将 /home/django/mysite 替换为 /var/www/html,则上述方法有效。

我在用户 django 下将 mod_wsgi 作为守护进程运行--所以我认为不是这样。我究竟做错了什么?我知道放 /var/www/html 很不明智,即使我没有文档根目录,所以真的很想弄清楚这一点!

【问题讨论】:

    标签: django apache mod-wsgi http-status-code-403


    【解决方案1】:

    诸如 /home/django 之类的主目录通常对其他人不可读,因此运行 Apache 的用户将无法看到该目录,因此访问将被禁止。这就是为什么当你将它移到别处时它会起作用的原因。

    【讨论】:

    • 但我正在以用户 'django' (守护程序模式)身份运行 mod_wsgi,所以这不会给它访问权限吗?如果没有,我需要做什么?
    • Apache 用户必须具有从根目录一直到 WSGI 脚本文件所在目录的目录的读取/搜索权限。如果使用 WSGI 脚本文件本身,Apache 不需要读取daemon 模式并以不同的用户身份运行它,但必须能够读取这些目录,以便 Apache 至少可以检测到该文件存在。
    猜你喜欢
    • 2014-02-18
    • 2018-06-12
    • 2014-12-19
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    相关资源
    最近更新 更多