MOD_WSGI Apache2 У вас нет прав для доступа к этому ресурсу - PullRequest
0 голосов
/ 07 апреля 2020

Я работаю над развертыванием проекта Django с apache2 и MOD_WSGI. Когда я запускаю сервер, я не могу получить доступ к веб-сайту и получаю сообщение об ошибке на сайте:

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

enter image description here Я настроил все, что мне нужно, как файл 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

Надеюсь, у некоторых из вас есть опыт с этим типом ошибки.

1 Ответ

0 голосов
/ 07 апреля 2020

Я не буду использовать или предоставлять root доступ к вашему веб-серверу по соображениям безопасности.

Я бы создал пользователя, который имеет доступ только к группе 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
...