从 aws elastic beanstalk 中的 .ebextensions 文件夹运行脚本

PHP*_*ger 1 amazon-web-services amazon-elastic-beanstalk

我正在尝试从上传战争时运行脚本,所以这里是配置的内容

container_commands:
    01_setup_apache:
        command: "cp .ebextensions/enable_mod_deflate.conf /etc/httpd/conf.d/enable_mod_deflate.conf"
    02_setup_script:
        command: "sudo su root"
    03_setup_script:
        command: "sudo mkdir -p /home/dev"
    04_setup_script:
        command: "sudo chmod 777 /home/dev -R"
    05_setup_script:
        command: "sudo cp .ebextensions/scripts/setup.sh /home/dev/"
    06_setup_script:
        command: "sudo chmod +x /home/dev/setup.sh"
    07_setup_script:
        command: "sudo /home/dev/setup.sh"
    08-restart-apache:
        command: "sudo /etc/init.d/httpd restart"
Run Code Online (Sandbox Code Playgroud)

我尝试了所有方法,但在执行 setup.sh 时部署总是失败。在上面的示例中,它在07_setup_script失败

这是日志内容

] : Starting activity...
/Command 01_setup_apache] : Starting activity...
/Command 01_setup_apache] : Completed activity.
/Command 02_setup_script] : Starting activity...
/Command 02_setup_script] : Completed activity.
/Command 03_setup_script] : Starting activity...
/Command 03_setup_script] : Completed activity.
/Command 04_setup_script] : Starting activity...
/Command 04_setup_script] : Completed activity.
/Command 05_setup_script] : Starting activity...
/Command 05_setup_script] : Completed activity.
/Command 06_setup_script] : Starting activity...
/Command 06_setup_script] : Completed activity.
/Command 07_setup_script] : Starting activity...
/Command 07_setup_script] : Activity execution failed, because: sudo: unable to execute /home/dev/setup.sh: No such file or directory
   (ElasticBeanstalk::ExternalInvocationError)
Run Code Online (Sandbox Code Playgroud)

如果实例上的ssh那里没有文件夹或文件 (/home/dev) 或 (/home/dev/setup.sh) 似乎以前的命令没有执行但日志说它已完成

我知道有一种方法可以在运行时创建脚本文件,但是我们可以避免这种情况而只使用上述方法。

Mar*_*ung 5

几个问题。您根本不应该开始尝试管理主目录/目录结构,这绝对超出 beanstalk 的最佳实践。也不要以 sudo 的身份运行,它以 root 身份执行钩子。

做这样的事情:

.ebextension/foo.config

container_commands:
  01_restart_httpd:
    command: /etc/init.d/httpd restart

files:
   /etc/httpd/conf.d/enable_mod_deflate.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      #content of your conf
Run Code Online (Sandbox Code Playgroud)

或者也

files:
   /etc/httpd/conf.d/enable_mod_deflate.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      #content of your conf

  /opt/elasticbeanstalk/hooks/appdeploy/post/50_restart_httpd:
    mode: "000777"
    owner: root
    group: root
    content: |
      #!/bin/sh
      /etc/init.d/httpd restart
Run Code Online (Sandbox Code Playgroud)