Невозможно обслужить статический файл в Django, развернутом на производстве в Digital ocean
в настоящее время я развернул свое приложение django в Digital ocean droplet. На localhost оно работает хорошо, но оно не может обслуживать js/css файлы в папке static при развертывании на prod, после некоторого гугления возможных решений, ничего не работает для меня.
server {
server_name keywordprocessor.prodsite.com www.keywordprocessor.prodsite.com>
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/projects/backend/crawler;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
.....
По умолчанию проект находится в корневом каталоге Digital Oceans
`cd projects` `pwd` returns /root/projects/
Настройки
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.0/howto/static-files/
STATIC_URL = "/static/"
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
STATIC_ROOT = os.path.join(BASE_DIR, "/")
Вот как выглядит папка проекта
backend/
crawler/
static/
templates
.gitignore
requirements.txt
/etc/systemd/service/gunicorn.service
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/root/projects/backend/crawler
ExecStart=/usr/local/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
crawler.wsgi:application
[Install]
WantedBy=multi-user.target
Все js и css файлы не могут быть обработаны
`Failed to load resource: the server responded with a status of 404 (Not Found)`
Загружается страница, но css испорчен
Приветствует
скопируйте ваши статические файлы в /var/www/static и измените nginx conf
1.Команда копирования в директории проекта cp -r ./static /var/www/static/
2.Разрешение на статическую папку, которая находится в команде /var/www/static/
sudo chmod 755 static
3.Измените ваш nginx.conf следующим образом
server {
listen 80;
server_name Your-IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
alias /var/www/static/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
4.Выполните эти команды для nginx и gunicorn
a) sudo nginx -t
b) sudo systemctl restart nginx
c) sudo systemctl restart gunicorn
5.Если вы получите какую-либо ошибку, проверьте журналы с помощью sudo tail -F /var/log/nginx/error.log и повторите попытку.