【发布时间】:2020-10-18 00:08:27
【问题描述】:
我最近能够在 Elastic Beanstalk 上使用 codepipeline 部署我的 Laravel 应用程序,但遇到了问题。我注意到我的路由由于 php.conf Nginx 配置而失败。我必须在 EB 的 nginx php.conf 文件中添加几行代码才能让它工作。
我现在的问题是,在每次部署之后,我修改 php.conf 文件的应用程序实例都被销毁并重新创建。我想要一种在每次成功部署后动态更新文件的方法。我有一个我想用我的应用程序版本化的文件版本,因此想在部署后创建指向该文件的符号链接。
经过大量研究,我偶然发现了 appDeploy Hooks on Elastic Beanstalk,它在部署后运行 post 脚本,所以这样做
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/91_post_deploy_script.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
sudo mkdir /var/testing1
sudo ln -sfn /var/www/html/php.conf.example /etc/nginx/conf.d/elasticbeanstalk/php.conf
sudo mkdir /var/testing
sudo nginx -s reload
由于某种原因,这不起作用。未创建符号链接,因此我的路线仍然无法正常工作..
我什至添加了一些 mkdir,因此可以确定该脚本中的命令运行,这些命令都没有运行,因为没有创建这些目录。
请注意,如果我 ssh 进入 ec2 实例并在那里运行命令,它就可以工作。该 bash 脚本也存在于 post 目录中,如果我在服务器上手动运行它也可以。
任何有关我如何解决此问题的指示都会有所帮助。也许我也做错了什么。
现在我已经通过关注this 来运行我的脚本。但是,脚本没有运行。我收到一个错误
2020/06/28 08:22:13.653339 [INFO] Following platform hooks will be executed in order: [01_myconf.config]
2020/06/28 08:22:13.653344 [INFO] Running platform hook: .platform/hooks/postdeploy/01_myconf.config
2020/06/28 08:22:13.653516 [ERROR] An error occurred during execution of command [app-deploy] - [RunPostDeployHooks]. Stop running the command. Error: Command .platform/hooks/postdeploy/01_myconf.config failed with error fork/exec .platform/hooks/postdeploy/01_myconf.config: permission denied
我尝试关注此论坛帖子here,通过向我的容器命令添加如下新命令来使我的文件可执行:
01_chmod1:
command: "chmod +x .platform/hooks/postdeploy/91_post_deploy_script.sh"
我仍然遇到同样的问题。权限被拒绝
【问题讨论】:
-
那是什么环境?亚马逊 Linux 1 还是 2?
-
操作系统是 Amazon Linux 2
-
appDeploy是个什么钩子?没有这样的钩子。你只有have:prebuild、predeploy和postdeploy? -
在压缩应用程序之前,您可以使其在本地工作站上可执行。另外,当您登录到实例时,您可以手动调用脚本吗?手动运行时是否正常运行?
-
不错。很高兴听到它成功了:-)
标签: amazon-web-services continuous-integration amazon-elastic-beanstalk devops continuous-deployment