Css не работает после развертывания приложения django на aws с gunicorn nginx

Я развернул свой проект django на EC2, но css не работает после развертывания. Я также выполнил команду collcectstatic, но мне все равно не повезло, когда я проверил в nginx error.log, он показывает перед файлами css, что разрешение запрещено, вот так:

2022/07/18 17:38:01 [error] 2262#2262: *4 open() "/home/ubuntu/theoj/online_judge_project/staticindex.css" failed (13: Permission denied), клиент: 49.38.225.106, сервер: 13.126.144.76, запрос: "GET /static/index.css HTTP/1.1", host: "13.126.144.76",

.

структура каталога моего проекта:

online_judge_project/
                    account/
                    homesrc/
                    language/
                    media/
                    oj/ /*name of my project*/
                      settings.py
                    problempg/
                    static/ /* folder containing css files*/
                    staticfiles/ /* folder made after running command collectstatics*/
                    template/
                    manage.py

**settings.py: **

nginx congif file:

server {
    listen 80;
    server_name 13.126.144.76;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/ubuntu/theoj/online_judge_project;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

Чтобы статические файлы загружались правильно, мне пришлось поместить их в каталог в папке /var/, а затем добавить location /static { autoindex on; root /var/WebApp_Static_Files/site_static; } в конфигурацию nginx для сайта. Убедитесь, что каталог /var/WebApp_Static_Files имеет права доступа 777

Для уточнения, это копия всех статических файлов в этой директории, которая находится на сервере под управлением Nginx, структуру проекта менять не нужно

Вам нужно будет отправлять файлы на сервер каждый раз, когда вы вносите изменения в css, изображения и все остальное. Я настроил задание cron, чтобы делать это периодически, так что мне не нужно было делать это вручную

Также вы можете удалить секретный ключ из приведенного выше кода

При отсутствии STATICFILES_STORAGE, значение location в конфигурации nginx должно отражать имя папки, в которую вы помещаете файлы. В данном случае, в той же папке, что и ваш STATIC_ROOT.

location /static/ {
    alias /home/ubuntu/theoj/online_judge_project/staticfiles/;
}

(Используя alias, а не root, так как конечные каталоги имеют разные имена)

В идеале, STATIC_ROOT - это загон перед развертыванием в другом месте (например, STATICFILES_STORAGE), но это должно заставить ваш сайт работать на данный момент.

Вернуться на верх