Django Elastic Beanstalk 静态配置不起作用

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

我正在尝试在 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 实例?预先感谢。

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

您还可以使用容器命令生成静态文件。在 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 下创建自定义配置文件

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