我正在尝试在 Elastic Beanstalk 上部署 Django 应用程序,但我的 html 模板读取由
python3 manage.py collectstatic
生成的静态文件夹中的 css 文件时出现问题。
我深入挖掘,发现当我通过 SSH 连接到托管我的应用程序的 EC2 实例时,文件
/etc/nginx/conf.d/elasticbeanstalk/01_static.conf
包含
location /static/ {
alias /var/app/current/static;
access_log off;
}
我的应用程序仅在我手动更改此文件以包含时才有效
location /static/ {
alias /var/app/current/static/;
access_log off;
}
这里唯一的变化是我在别名末尾添加了一个尾部斜杠。我对此进行了更多查找,并建议我在根目录中的
01_static.config
目录中创建一个 .ebextensions
文件,我这样做了并填充了以下内容:
files:
"/etc/nginx/conf.d/elasticbeanstalk/01_static.conf":
mode: "000755"
owner: root
group: root
content: |
alias /var/app/current/static/;
但是,这似乎没有任何作用。有谁知道如何在每次部署时手动添加尾部斜杠而不通过 SSH 连接到 EC2 实例?预先感谢。
您还可以使用容器命令生成静态文件。在 ebextensions 中尝试下面的配置文件。
container_commands: 01_collectstatic:
command: "source /var/app/venv/*/bin/activate && python manage.py collectstatic --noinput"
leader_only: true
option_settings: aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: YOURAPP.settings
--编辑-- 我的错我没听懂你的问题。您可以使用扩展为 nginx 进行自定义设置。
如果您使用 AL2,请尝试以下配置文件。
option_settings:
aws:elasticbeanstalk:environment:proxy:staticfiles:
/static: static
这里的答案AWS 中的静态文件配置不起作用将此设置与我之前的答案相结合。
如果这不起作用,您还可以尝试对 nginx 进行自定义设置。
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-linux-extend.html.
在 .platform/nginx/conf.d/custom.config 下创建自定义配置文件