在 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 上运行节点和反应

如何使用 aws cli 在 Elastic Beanstalk 上上传和部署?

在aws elastic beanstalk上上传文件?