gpt4 book ai didi

amazon-web-services - 如何在部署应用程序 Elastic beanstalk 上修改 NGINX 配置

转载 作者:行者123 更新时间:2023-12-04 12:19:32 28 4
gpt4 key购买 nike

我需要向 nginx.conf 添加一些位置,以便环境 URL 指向 app.php。我已经使用 vi 修改了文件。重启 NGINX 就可以了。但是我需要在使用 时自动加载这个配置eb 部署 .

我已经阅读并尝试过:
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

Elasticbeanstalk configuring HTTPS on Single Instance of Python: null values are not allowed in templates

How to configure .ebextensions for nginx location directive?

Amazon Elastic Beanstalk ebextension

我有
/.ebextensions/01_nginx.config

files:
"/etc/nginx/nginx.conf":
mode: "0000644"
owner: root
group: root
content: |
My conf file

但是那个配置不起作用。我试过改变“/etc/nginx/nginx.conf”:通过“/etc/nginx/my_nginx.conf”:文件出现了!所以我尝试用我的自定义文件替换默认文件:
container_commands:
deleteConf:
command: "sudo rm /etc/nginx/nginx.conf"
changeConf:
command: "sudo cp /etc/nginx/my_nginx.conf /etc/nginx/nginx.conf"

放置在 01_nginx.config 中的先前配置下方。但是命令不起作用。 nginx.conf 没有被我的删除或替换。我做错了什么?

编辑:我读过 .ebextensions 中的文件是按字母顺序评估的。我想知道是否在文件存在之前执行了复制命令。所以我创建了一个新文件/.ebextensions/02_copy.config 并移到那里
container_commands:
deleteConf:
command: "sudo rm /etc/nginx/nginx.conf"
changeConf:
command: "sudo cp /etc/nginx/my_nginx.conf /etc/nginx/nginx.conf"

没有运气

最佳答案

在花了一整天时间尝试修改部署时的 nginx.conf 之后,通过 .ebextensions 中的 .config 文件直接在/etc/nginx/中创建自定义 nginx.conf 对我不起作用,因为它会被默认系统覆盖一。
当我在/tmp 中创建自定义文件并编写一个替换/etc/nginx/nginx.conf 的 container_command 时,发生了同样的事情。
您实际上需要创建一个将在部署后执行的脚本,在 elastic beanstalk 写入您的所有文件后。
如果您使用的是 Amazon Linux 1 环境:
来源:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platform-hooks.html
要在部署后执行任何脚本,请将以下代码放入 .ebextensions 根目录下的 .config 文件中
01_write_custom_ng_conf.config

  • 创建一个目录来存储您的脚本。

  • commands:
    create_post_dir:
    command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
    ignoreErrors: true
  • 创建修改后的 nginx.conf 文件并将其放在/tmp 中。

  • files:
    "/tmp/custom_nginx.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
    # your .conf file
  • 创建一个脚本,将在/opt/elasticbeanstalk/hooks/appdeploy/post 中创建的自定义脚本替换原始 nginx.conf。这应该在部署后自动执行。

  •    "/opt/elasticbeanstalk/hooks/appdeploy/post/update_ng_conf.sh":
    mode: "000644"
    owner: root
    group: root
    content:
    #!/usr/bin/bash
    sudo mv /tmp/custom_nginx.conf /etc/nginx/nginx.conf
    如果您使用的是 Amazon Linux 2 环境:
    来源: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-linux-extend.html
    脚本现在从 .platform 中的子文件夹执行,您必须将其放置在项目的根目录下,如下所示:
    ~/your-app/
    |-- someFile.py
    |-- Procfile
    |-- readme.md
    |-- .ebextensions/
    | |-- 01_write_custom_ng_conf.config
    `-- .platform/
    |-- hooks
    `-- postdeploy
    `-- 01_update_ng_conf.sh # Executed post deployment
    在 .ebextensions 的根目录创建一个 .config 文件。
    01_write_custom_ng_conf.config
    创建修改后的 nginx.conf 文件并将其放在/tmp 中。
    files:
    "/tmp/custom_nginx.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
    # your .conf file
    在 .platform/hooks/postdeploy 中创建一个小脚本并将权限更改为 755。
    01_update_ng_conf.sh
    #!/usr/bin/bash

    # Replace the original nginx.conf by our custom one
    sudo mv /tmp/custom_nginx.conf /etc/nginx/nginx.conf

    # Restart nginx to apply modifications
    sudo service nginx restart
    这对我来说在 Amazon Linux 2 Python 3.7 环境中非常有效。不确定你的,但这应该是一样的。
    确保您的 .config 文件缩进是完美的,因为解析器并不总是检测到错误,并且不会执行代码。

    关于amazon-web-services - 如何在部署应用程序 Elastic beanstalk 上修改 NGINX 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62299458/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com