首页 > 解决方案 > Django 文件夹安装权限

问题描述

官方的 Django 安装文档似乎缺少如何在安装后设置文件夹权限,因此 403 Foridden 错误不会出现在实时 apache 安装中。

我花了 2 个月的时间浏览了数千篇论坛帖子、数百篇指南以及无数关于设置文件夹权限的 Stackoverflow 问答。这些帖子、指南或问答中没有任何两个是相同的。所有这些都充斥着用户必须在这里和那里实施自定义解决方案才能让事情正常运行,对于应该设置的文件夹权限的确切设置在任何地方都没有一致性。我可能代表沉默的无数人在尝试执行文件夹权限时放弃了。

所以我的问题很简单,如何在 Ubuntu 16.04 上设置正确的文件和文件夹权限,在虚拟环境中使用 Python 2.11 配置,在 Apache mod_wsgi 服务器上使用 Django?

我的结构是根据官方文档 - /home/main/myproject/project 所有这些文件夹(home、main、myproject 和 project)都有 755 个权限,由一个名为“main”的非 root sudo 用户拥有,我将其用于所有内容.

我已经搞定了:

chmod 664 ~/myproject/db.sqlite3
chmod 775 ~/myproject
sudo chown :www-data ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject

显然这些是我需要的所有权限。但是我仍然收到 403 禁止错误。我到底如何才能让这个 Django 的东西活起来?

编辑:我完全按照本教程进行操作:https ://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-apache-and-mod_wsgi-on-debian-8特别是部分附加 /etc/apache2/sites-available/000-default.conf

我的 000-default.conf 附加看起来像:

<VirtualHost *:80>
. . .

Alias /static /home/main/myproject/static
<Directory /home/main/myproject/static>
    Require all granted
</Directory>

# Next, add the following directory block
<Directory /home/main/myproject/project>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

WSGIDaemonProcess project python-home=/home/main/myproject/projectenv python-path=/home/main/myproject
WSGIProcessGroup project
WSGIScriptAlias / /home/main/myproject/project/wsgi.py

访问禁止域索引后,我的 Apache 错误日志似乎没有显示任何问题:

[2018 年 6 月 27 日星期三 07:03:46.807525] [mpm_prefork:notice] [pid 21287] AH00171:请求优雅重启,正在重启 [2018 年 6 月 27 日星期三 07:03:46.878042] [wsgi:warn] [pid 21287] mod_wsgi:为 Python/2.7.11 编译。[2018 年 6 月 27 日星期三 07:03:46.878052] [wsgi:warn] [pid 21287] mod_wsgi:使用 Python/2.7.12 的运行时。[2018 年 6 月 27 日星期三 07:03:46.878142] [mpm_prefork:notice] [pid 21287] AH00163: Apache/2.4.18 (Ubuntu) mod_fcgid/2.3.9 OpenSSL/1.0.2g mod_wsgi/4.3.0 Python/2.7.12已配置 -- 恢复正常操作 [Wed Jun 27 07:03:46.878156 2018] [core:notice] [pid 21287] AH00094:命令行:'/usr/sbin/apache2' [Wed Jun 27 07:03:50.444008 2018] [mpm_prefork:notice] [pid 21287] AH00171: 请求优雅重启,正在重启 [Wed Jun 27 07:03:50.517693 2018] [wsgi:warn] [pid 21287] mod_wsgi: 为 Python/2.7.11 编译。[6 月 27 日星期三 07:03:50。517704 2018] [wsgi:warn] [pid 21287] mod_wsgi:使用 Python/2.7.12 的运行时。[2018 年 6 月 27 日星期三 07:03:50.517823] [mpm_prefork:notice] [pid 21287] AH00163: Apache/2.4.18 (Ubuntu) mod_fcgid/2.3.9 OpenSSL/1.0.2g mod_wsgi/4.3.0 Python/2.7.12已配置 -- 恢复正常操作 [Wed Jun 27 07:03:50.517837 2018] [core:notice] [pid 21287] AH00094: Command line: '/usr/sbin/apache2'

标签: djangoubuntuubuntu-16.04

解决方案


推荐阅读