Django不提供静态文件ElasticBeanstalk

时间:2020-03-31 10:07:19

标签: django amazon-elastic-beanstalk django-staticfiles

我有一个Django应用程序,当我在本地运行它时,它会从s3存储桶中提供静态文件。但是部署到EB之后,我得到了404,因为浏览器正在渲染静态文件的意外链接。

我的设置如下

STATIC_URL = '/static/'
AWS_STORAGE_BUCKET_NAME = 'bucket-name'  # or None if using service role
AWS_ACCESS_KEY_ID = os.environ.get('S3_ACCESS_KEY')
AWS_SECRET_ACCESS_KEY = os.environ.get('S3_SECRET_ACCESS_KEY')    
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

STATICFILES_LOCATION = 'static'
STATICFILES_STORAGE = '<app_name>.custom_storages.StaticStorage'

MEDIAFILES_LOCATION = 'media'
DEFAULT_FILE_STORAGE = '<app_name>.custom_storages.MediaStorage'

这里有我的custom_storage.py文件。

from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage


class StaticStorage(S3Boto3Storage):
    location = settings.STATICFILES_LOCATION


class MediaStorage(S3Boto3Storage):
    location = settings.MEDIAFILES_LOCATION

当我在本地运行该应用程序时,使用此设置,浏览器正在尝试从

中提取静态文件

https://bucket-name.s3.amazonaws.com/static/ {static-file-path}

到目前为止一切都很好。

然后,我将应用程序部署到EB,地狱崩溃了。我认为EB更改了STATIC_URL,并且已部署的应用正在尝试从

加载资产

http:// {eb-app-endpoint} /static/main/css/font-awesome.css

它同时忽略了 S3Boto3Storage 。我缺少任何设置吗?另外,这是我第一次在EB上部署生产级应用程序,因此非常感谢任何投入。

0 个答案:

没有答案