Django不提供静态文件ElasticBeanstalk

问题描述 投票:0回答:1

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

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

django amazon-elastic-beanstalk django-staticfiles
1个回答
0
投票

关于此部署的问题是,一旦通过AWS EB发布静态文件,(如style.css)不会被读取,并且页面缺少样式。文件和论坛指出这是Django的部署方式还不太清楚并且必须指示Web服务器使用这些文件。

© www.soinside.com 2019 - 2024. All rights reserved.