Сервер на Ubuntu с Django, Gunicorn, Nginx не отдает статику
В файле /var/log/nginx/error.log ошибки следующего типа:
[error] 714#714: *5 open() "/home/<user>/<projects>/static/css/custom.css" failed (13: Permission denied), client: ip, server: domain, request: "GET /static/css/custom.css HTTP/1.1", host: "domain", referrer: "http://domain/"
В файле /etc/nginx/sites-available/<project>
указаны следующие настройки:
server {
listen 80;
server_name <domain>;
location = /favicon.ico { access_log off; log_not_found off; }
location /collected_static/ {
root /home/<user>/<project>;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
В файле /etc/systemd/system/gunicorn.service
указаны следующие настройки:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=vsevolod
Group=www-data
WorkingDirectory=/home/<user>/<project>
ExecStart=/home/<user>/<project>/myvenv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
config.wsgi:application
[Install]
WantedBy=multi-user.target
В файле settings.py
указаны следующие настройки:
STATIC_URL = '/static/'
STATICFILES_DIRS = (
BASE_DIR / 'static',
)
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
Я же правильно понимаю, что в файле конфигурации Nginx после location нужно указывать именно ту директорию, которая генерируется после команды python3 manage.py collectstatic
, чтобы Nginx именно ее отдавал?
Выполнял команду sudo -u www-data stat /home/<user>/<project>/collected_static
и получил ошибку о том, что у пользователя не хватает прав. Выполнил команду sudo gpasswd -a www-data <user>
, перезагрузил Nginx
и сервер на всякий случай, но статика так и не появилась, и в логах все те же ошибки.
Проекты, которые я выкладываю, разрабатывал 2 года назад и тогда тоже выкладывал на виртуальный сервер и все было ок, достаточно быстро все настроил, а сейчас не могу понять что к чему.
Я не очень хорошо владею системным администрированием, делаю все по гайдам. Поэтому очень прошу помочь.