Amazon-Web-Services
在 AWS Beanstalk 安裝後掛鉤中將 PHP 腳本作為後台程序執行
UDPATE
事實證明,這是使用彈性豆莖的錯誤方法。該應用程序將執行,但它將是一個 hack 而不是正確的解決方案。
請改用 EC2。
我正在使用以下設置部署 PHP 應用程序:
設置
- Bitbucket 管道使用 composer 建構應用程序並創建一個完成的 zip 文件。
- Bitbucket AWS Elastic Beanstalk 將程式碼部署到 AWS Elastic Beanstalk 應用程序。
- opt/elasticbeanstalk/hooks/appdeploy/post中的安裝後掛鉤在部署後執行 PHP 腳本
問題
應該在部署後掛鉤上作為後台任務執行的 PHP 腳本永遠不會停止執行。這有效地堵塞了管道。
Bitbucket 管道檢查AWS Elastic Beanstalk 應用程序的執行狀況
這是 .ebextensions 配置文件的程式碼。
container_commands: 01-create_post_hook: command: "mkdir -p /opt/elasticbeanstalk/hooks/appdeploy/post" ignoreErrors: true files: "/opt/elasticbeanstalk/hooks/appdeploy/post/start.sh": mode: "000770" owner: root group: root content: | #!/bin/bash echo "--------Starting Runner------------" php /var/app/current/runner.php &
問題
- bash 腳本是否正確配置為在後台執行?
- 應用程序更新後是否有另一種(推薦的)方法來執行腳本?
筆記
由於應該在後台執行的腳本實際上從未完成,因此應用程序的健康狀態始終保持在“資訊”。這是一個問題,因為要成功部署應用程序,它需要處於“OK”狀態。
我在整個網際網路上發現的類似問題:
https://forums.aws.amazon.com/thread.jspa?threadID=301439&tstart=0 https://forums.aws.amazon.com/thread.jspa?messageID=425130粪
通常,我們使用 CI/CD(持續集成/持續傳遞)工具,例如 Jenkins、CircleCI 或 Bamboo 來完成這些工作。他們可以從 Bitbucket 獲得一個 webhook,它可以觸發任何類型的任務,例如呼叫 PHP 腳本、執行 bash 腳本、執行 raketask 等。