AWS Elastic Beanstalk如何将get.ebextensions写入/etc/httpd/conf.d/里面的conf文件?

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk如何将get.ebextensions写入/etc/httpd/conf.d/里面的conf文件?【英文标题】:AWS Elastic Beanstalk how to get.ebextensions to write to /etc/httpd/conf.d/ the conf files inside? 【发布时间】:2021-01-20 14:42:27 【问题描述】:

在部署 Elastic Beanstalk 应用程序期间,尝试从 Elastic Beanstalk 将 .conf 文件添加到 E2 实例上的 /etc/httpd/conf.d/ 目录。我在 .ebextensions 目录中添加了一个 .config 文件,其定义如下:

files:
  "/etc/php.d/project.ini" :
    mode: "000644"
    owner: root
    group: root
    content: |
      max_input_vars = 10000
      upload_max_filesize = 256M
      post_max_size = 256M

container_commands:
  01_enable_mod_deflate:
    command: "cp .ebextensions/enable_mod_deflate.conf /etc/httpd/conf.d/enable_mod_deflate.conf"
  02_enable_mod_expires:
    command: "cp .ebextensions/enable_mod_expires.conf /etc/httpd/conf.d/enable_mod_expires.conf"
  03_secure_wordpress:
    command: "cp .ebextensions/secure_wordpress.conf /etc/httpd/conf.d/secure_wordpress.conf"
  04_restart_apache:
    command: "sudo apachectl restart"

.conf 文件都在 .ebextensions 文件夹中,但它们没有被复制过来,这导致 wordpress 站点根目录中的 .htaccess 出现问题。正在生成的错误如下所示:

命令 01_enable_mod_deflate (cp /var/app/current/.ebextensions/enable_mod_deflate.conf /etc/httpd/conf.d/enable_mod_deflate.conf) 失败 2020-10-05 13:45:59,944 [错误] 在构建 postbuild_0_Benefits_Bridge_2 期间遇到错误:命令 01_enable_mod_deflate 失败 回溯(最近一次通话最后): 文件“/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py”,第 542 行,在 run_config CloudFormationCarpenter(配置,self._auth_config).build(工作日志) 文件“/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py”,第 260 行,在构建中 更改['commands'] = CommandTool().apply(self._config.commands) 文件“/usr/lib/python2.7/site-packages/cfnbootstrap/command_tool.py”,第 117 行,在应用中 raise ToolError(u"Command %s failed" % name) ToolError:命令 01_enable_mod_deflate 失败

不确定其中的任何含义,但它会为每个文件生成相同的错误。这里有什么问题?我刚刚启动了一个新的 Elastic Beanstalk 实例,默认情况下不应该这样做吗?实例有问题吗?由于根目录中的 .htaccess 文件,该站点生成 500 错误,但如果我将其删除,则只有主页加载,所有其他页面都会出现 404 错误。我需要将这些 .conf 文件添加到所有实例的 /etc/httpd/conf.d/ 目录中,但由于上述错误,它们根本没有添加到任何实例中,我不知道如何修复,或者如果这是使用 Elastic Beanstalk 创建的默认实例的问题?

如何解决这个问题?我已经重新启动了环境,但这并没有帮助。我对重建环境有点犹豫,因为这会清除连接到应用程序的数据库,并且不确定这是否会有所帮助。

【问题讨论】:

您可以通过 ssh 进入实例并从内部进行检查吗?目的地位置是否正确?如果您手动复制文件,一切都按预期工作吗? 是的,我可以通过 ssh 进入实例,并且复制文件在实例中按预期工作。 /etc/httpd/conf.d/ 的目录在那里,但 .ebextensions 目录甚至根本不在实例上。不应该也将其复制到 /var/app/current 目录中吗?还是仅在部署期间使用? 好的,更多信息。 project.ini 文件正在正确写入以下信息。当我通过 ssh 登录时,我必须执行 sudo cp 才能使其正常工作,所以我也要尝试将其更改为 .config 文件中的内容,并希望这样做。 sudo 尝试过,但仍然没有运气。它只是不会复制文件,甚至不会在任何地方将文件添加到实例中。 【参考方案1】:

您可能正在使用更改了代理(nginx 或 Apache)配置文件位置的 Amazon Linux 2。 将您的代理配置文件放在 .platform 下,而不是 .ebextensions 下: 例如:

|____wp-signup.php
|____.platform
| |____httpd
| | |____conf.d
| | | |____http-redirect.conf

文档中的更多详细信息:

Migrating your Elastic Beanstalk Linux application to Amazon Linux 2

【讨论】:

谢谢,我找到了解决这个问题的另一种方法,但我很感激对此的反馈。将在下一个项目中对此进行测试。再次感谢! 谢谢。我一直在努力正确上传 conf 文件,而 .platform 文件夹就是诀窍!

以上是关于AWS Elastic Beanstalk如何将get.ebextensions写入/etc/httpd/conf.d/里面的conf文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 express react 应用程序部署到 aws elastic beanstalk?

如何将 git 子模块推送到 AWS Elastic Beanstalk?

如何将 AWS 凭证与 Jenkins 一起使用以部署到 Elastic Beanstalk?

如何将 node.js 应用程序部署到 AWS Elastic Beanstalk

如何将 AWS CLI 与 Elastic Beanstalk 一起使用?

如何在 AWS Elastic Beanstalk 上安装/运行 Spark Java 框架?