[英]How do I configure aws:elasticbeanstalk:container:python:staticfiles in Elastic Beanstalk?
我正在尝试运行eb create
以将我的 Django 项目部署到 AWS。 我得到的错误是ERROR: ServiceError - Configuration validation exception: Invalid option specification (Namespace: 'aws:elasticbeanstalk:container:python:staticfiles', OptionName: '/static/'): Unknown configuration setting.
我不确定这个错误是什么意思,而且我找不到太多关于它的东西。
我试图在.ebextensions/django.config
中定义这个变量。
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: ebdjango.wsgi:application
aws:elasticbeanstalk:container:python:staticfiles:
/static/: 'frontend/views/build/static/'
我的 settings.py 配置了以下变量:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'frontend/views/build/static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
我正在尝试在 Amazon Linux 2 上运行此 ebs 实例
如果您的环境使用基于 Amazon Linux 2 的平台分支,请使用 aws:elasticbeanstalk:environment:proxy:staticfiles 命名空间。
以下示例配置文件告诉代理服务器提供文件:
Example.ebextensions/django.config
option_settings:
aws:elasticbeanstalk:environment:proxy:staticfiles:
/static/: static
笔记:
STATIC_ROOT
路径而不是STATICFILES_DIRS
啊,是的,Amazon Linux 2 文档并未完全跟上速度。
option_settings:
aws:elasticbeanstalk:environment:proxy:staticfiles:
/static: /path/to/static
创建一个名为.platform/hooks/01_collect_static.sh的部署后挂钩文件,并使用 chmod 使其可执行。
输入以下内容:
#!/bin/bash
source "$PYTHONPATH/activate" && {
python manage.py collectstatic --noinput;
}
在部署时,django 现在会将您的 static 文件收集到您在settings.py中定义的文件夹中。
注意,我在这里也包含了我的 migrate 命令,这样我的钩子文件看起来像:
#!/bin/bash
source "$PYTHONPATH/activate" && {
if [[ $EB_IS_COMMAND_LEADER == "true" ]];
then
# log which migrations have already been applied
python manage.py showmigrations;
# migrate
python manage.py migrate --noinput;
else
echo "this instance is NOT the leader";
fi
python manage.py collectstatic --noinput;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.