MOD_WSGI Apache2 您无权访问此资源

MOD_WSGI Apache2 You don't have permission to access this resource

我正在使用 apache2 和 MOD_WSGI 部署一个 Django 项目。当我 运行 服务器时,我无法访问该网站,我在网站上收到错误消息,

Forbidden
You don't have permission to access this resource.
Apache/2.4.29 (Ubuntu) Server at testnexusstudy.com Port 8081

我已经设置了我认为我需要的一切,比如 conf 文件,

<VirtualHost *:8081>

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html


ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

#Include conf-available/serve-cgi-bin.conf

Alias /static /root/StudBud1/static
<Directory /root/StudBud1/static>
    Require all granted
</Directory>

Alias /media /root/StudBud1/media
<Directory /root/StudBud1/media>
    Require all granted
</Directory>


<Directory /root/StudBud1/StudBud1>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

WSGIScriptAlias / /root/StudBud1/StudBud1/wsgi.py
WSGIDaemonProcess StudBud1 python-path=/root/StudBud1
WSGIProcessGroup StudBud1


</VirtualHost>

我已经提供了我认为 apache 所需的所有权限,这是我的 ls -la

drwxrwxr-x 12 root www-data  4096 Apr  5 19:36 StudBud1
-rw-rw-r--  1 root www-data 204800 Apr  5 19:36 db.sqlite3

希望你们中的一些人遇到过此类错误。

出于安全原因,我不会使用或授予对您的网络服务器的根访问权限。

我会创建一个只能访问 www-data 组的用户,确保 apache 也在该组中。

其中一些命令来自 Fedora 发行版,因此它们可能与 Debian 略有不同。

$ adduser deploy
$ vim /etc/group

在/etc/group中:

www-data:x:1003:apache,deploy

/location/to/vhosts/website.conf(为清楚起见删除了无关的设置)

<VirtualHost *:80>

    Alias /static/ /srv/vhosts/mywebsite/static/
    Alias /media/ /srv/vhosts/mywebsite/media/
    Alias /robots.txt /srv/vhosts/robots.txt

    <Directory /srv/vhosts/mywebsite/path/to/django/configs>
        Require all granted
    </Directory>

    <Directory /srv/vhosts/mywebsite/static>
      Require all granted
    </Directory>

    <Directory /srv/vhosts/mywebsite/media>
      Require all granted
    </Directory>

    <Location "/robots.txt">
      SetHandler None
      Require all granted
    </Location>

    WSGIDaemonProcess mywebsite python-home=/srv/vhosts/mywebsite/.venv python-path=/srv/vhosts/mywebsite/
    WSGIProcessGroup mywebsite
    WSGIScriptAlias / /srv/vhosts/mywebsite/path/to/django/configs/wsgi.py

</VirtualHost>

然后重启apache

完成后,确保将您的目录提供给用户和组 www-data 作为 sudo(-R 表示递归)

$ sudo chown -R deploy:www-data /path/to/webroot

我完全是个初学者。 在全新安装时,我必须为 /var/www/html 目录设置权限。 默认情况下它们是 -rw-------- 我输入了 sudo chmod 775 * 并且它起作用了。