在AWS Elastic Beanstalk上部署后运行PHP脚本

时间:2014-09-15 23:48:01

标签: magento elastic-beanstalk

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

3 个答案:

答案 0 :(得分:8)

技术上Josh不正确。根据文档(http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-commands):命令部分.."命令按名称按字母顺序处理,并在设置应用程序和Web服务器并提取应用程序版本文件之前运行"

我最了解的是" container_commands" " container_commands中的命令按名称按字母顺序处理。它们在应用程序和Web服务器设置完毕后运行应用程序版本文件,但在部署应用程序版本之前运行。"

我不知道如何在部署后真正运行脚本(这就是为什么我在这里寻找答案)。

答案 1 :(得分:6)

Elastic Beanstalk会查看 / opt / elasticbeanstalk / hooks / appdeploy / post 目录下的文件,以便在部署后运行。

所以你可以利用这个并做:

commands:
  create_post_dir:
    command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
    ignoreErrors: true
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/job_after_deploy.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      /var/app/current
      ** run your php script here **

答案 2 :(得分:-3)

是的,.ebextensions正是您要找的。要了解如何捆绑源代码,请查看sample applications。你也可以看一下PHP。

有关.ebextensions的更多信息,请查看this page

以下是自定义命令的示例。这可以放在sample.config目录中名为.ebextensions的文件中:

commands:
    success_command:
        command: echo "this will be ran after launching"

如果您复制并粘贴YAML并仔细检查格式,请务必小心。您也可以使用遵循类似格式的JSON。