Django не может обслуживать статические файлы из ведра s3

Я создал несколько моделей и разместил свой проект на сервере разработки на экземпляре AWS EC2. Я использовал хранилища Django и следовал документации для настройки settings.py. Когда я запускаю manage.py collectstatic, статические файлы успешно перемещаются в ведро, но когда я получаю доступ к админке Django, CSS отсутствует.

Может ли кто-нибудь помочь мне исправить это?

Разрешения моего ведра

{
    "Version": "2012-10-17",
    "Id": "Policy1650117254896",
    "Statement": [
        {
            "Sid": "Stmt1650117250899",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::agristore.001/*"
        }
    ] }

Мой файл настроек

STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / 'static/' 
MEDIA_URL = '/media/' 
MEDIA_ROOT = BASE_DIR / 'media/'

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3StaticStorage' 
AWS_ACCESS_KEY_ID = '***' 
AWS_SECRET_ACCESS_KEY = '***' 
AWS_STORAGE_BUCKET_NAME = '****' 
AWS_S3_FILE_OVERWRITE = False 
AWS_QUERYSTRING_AUTH = False

Мои настройки Nginx

server {
    server_name <my ip>;
    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/ubuntu/venv/src;
    }

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

Вам нужно установить STATIC_URL на полный URL (включая домен) корня вашего ведра S3.

То, что вы делаете здесь, заставляет шаблоны генерировать относительные URL-адреса статических активов, которые, вероятно, в конечном итоге отправляются на ваш экземпляр EC2, где Nginx получает их и пытается найти файлы со ссылками в /home/ubuntu/venv/src.

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