Назад | Перейти на главную страницу

Запустите PHP-скрипт в качестве фонового процесса в AWS Beanstalk Post Install Hook

UDPATE

Оказывается, это неправильный способ использования эластичного бобового стебля. Приложение будет работать, но это будет скорее взлом, чем правильное решение.

Вместо этого используйте EC2.


Я развертываю приложение PHP, используя следующую настройку:

Настроить

  1. Bitbucket pipeline создает приложение с помощью composer и создает готовый zip-файл.
  2. Bitbucket AWS Elastic Beanstalk развертывает код в приложении AWS Elastic Beanstalk.
  3. Хук после установки в opt / elasticbeanstalk / крючки / appdeploy / сообщение запускает скрипт PHP после развертывания

Проблема

Сценарий PHP, который должен выполняться в обработчике post deploy в качестве фоновой задачи, никогда не прекращает свою работу. Это эффективно забивает трубопровод.

Снимок экрана: конвейер работает вечно (остановлен специально)

Конвейер 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 &

Вопросы

Ноты

Поскольку сценарий, который должен запускаться в фоновом режиме, на самом деле никогда не завершается, состояние работоспособности приложения всегда остается на уровне «info». Это проблема, поскольку для успешного развертывания приложения требуется состояние «ОК».

Состояние приложения зависло на "Информация", а не на "ОК"

Подобные вопросы я нашел в Интернете:

https://forums.aws.amazon.com/thread.jspa?threadID=301439&tstart=0 https://forums.aws.amazon.com/thread.jspa?messageID=425130&#425130

Обычно для этого мы используем инструменты CI / CD (непрерывная интеграция / непрерывная доставка), такие как Jenkins, CircleCI или Bamboo. Они могут получить веб-перехватчик от Bitbucket, который запускает любые задачи, такие как вызов PHP-скрипта, запуск bash-скрипта, запуск raketask и т. Д.