在 AWS Elastic Beanstalk 上部署后运行 PHP 脚本
Posted
技术标签:
【中文标题】在 AWS Elastic Beanstalk 上部署后运行 PHP 脚本【英文标题】:Run PHP script after deployment on AWS Elastic Beanstalk 【发布时间】:2014-11-09 14:29:25 【问题描述】:我创建了一个 php 脚本,它为 Magento 生成一个带有所需数据库设置和凭据的 local.xml 文件。我需要在部署应用程序后运行它;但是我似乎无法找到这样做的方法。我的理解是我需要在.ebextensions
目录中创建一个.config
文件。谁有解决办法?
【问题讨论】:
【参考方案1】:从技术上讲,Josh 是不正确的。根据文档 (http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-commands):命令部分 ..“命令按名称的字母顺序处理,它们在设置应用程序和 Web 服务器以及提取应用程序版本文件之前运行。”
我所知道的最接近的是“container_commands”部分,其中“container_commands 中的命令按名称按字母顺序处理。它们在设置应用程序和 Web 服务器并提取应用程序版本文件后运行,但在部署应用程序版本之前。”
我不知道真正运行脚本后部署的方法(这就是我在这里寻找答案的原因)。
【讨论】:
我错过了他问题的“部署后”部分。【参考方案2】:Elastic Beanstalk 会在部署后查看 /opt/elasticbeanstalk/hooks/appdeploy/post 目录下的文件以运行。
所以你可以利用这个来做:
命令: create_post_dir: 命令:“mkdir /opt/elasticbeanstalk/hooks/appdeploy/post” 忽略错误:真 文件: “/opt/elasticbeanstalk/hooks/appdeploy/post/job_after_deploy.sh”: 模式:“000755” 所有者:根 组:根 内容:| #!/usr/bin/env bash /var/app/当前 ** 在这里运行你的 php 脚本 **【讨论】:
值得一提的是,这似乎是在配置环境变量之前运行的,所以不要依赖它们来区分脚本中的暂存/生产。 没关系,通过在运行 PHP 脚本之前添加source /opt/elasticbeanstalk/support/envvars
解决了环境变量问题。【参考方案3】:
是的,.ebextensions
就是您要找的。要了解如何捆绑源代码,请查看 sample applications。您也可以查看一个 PHP。
有关.ebextensions
的更多信息,请查看this page。
这是一个自定义命令的示例。这可以放在.ebextensions
目录中名为sample.config
的文件中:
commands:
success_command:
command: echo "this will be ran after launching"
如果您复制并粘贴 YAML 并仔细检查格式,请务必小心。您也可以使用类似格式的 JSON。
【讨论】:
以上是关于在 AWS Elastic Beanstalk 上部署后运行 PHP 脚本的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS Elastic Beanstalk 上扩展 Magento
如何在 AWS Elastic Beanstalk 上设置 HTTPS
如何在 AWS Elastic Beanstalk 上设置 HTTPS
在 AWS Elastic Beanstalk 上运行节点和反应