我有一个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上部署生产级应用程序,因此非常感谢任何投入。