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.