【问题标题】:Run PHP script after deployment on AWS Elastic Beanstalk在 AWS Elastic Beanstalk 上部署后运行 PHP 脚本
【发布时间】:2014-11-09 14:29:25
【问题描述】:

我创建了一个 PHP 脚本,它为 Magento 生成一个带有所需数据库设置和凭据的 local.xml 文件。我需要在部署应用程序后运行它;但是我似乎无法找到这样做的方法。我的理解是我需要在.ebextensions 目录中创建一个.config 文件。谁有解决办法?

【问题讨论】:

    标签: magento amazon-elastic-beanstalk


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 2015-07-28
      • 2017-04-07
      • 2012-10-25
      • 2015-06-30
      • 2017-07-26
      • 2018-07-19
      • 2014-04-16
      • 1970-01-01
      • 2015-09-20
      相关资源
      最近更新 更多