我有一个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,并且已部署的应用正在尝试从
加载资产全部。我缺少任何设置吗?另外,这是我第一次在EB上部署生产级应用程序,我们非常感谢您的投入。http:// {eb-app-endpoint} /static/main/css/font-awesome.css
其忽略S3Boto3Storage
我有一个Django应用,当我在本地运行它时,它正在从s3存储桶中提供静态文件。但是部署到EB之后,我得到了404,因为浏览器正在渲染静态文件的意外链接。 ...
关于此部署的问题是,一旦通过AWS EB发布静态文件,(如style.css)不会被读取,并且页面缺少样式。文件和论坛指出这是Django的部署方式还不太清楚并且必须指示Web服务器使用这些文件。