Возьмем, например, следующий файл .config в .ebextensions /
container_commands:
000_run_queue_daemon:
command: "nohup php artisan queue:work --daemon &"
test: "ps -ef | grep artisan | grep -v grep > /dev/null || echo 1"
Если демон еще не запущен, запустите обработчик очереди. Демон обработчика очереди работает вечно (по замыслу) и поэтому должен запускаться как фоновый процесс.
Амперсанд, похоже, не действует, и хвостовой журнал cfn-init.log просто останавливается на
2014-09-15 00:24:53,921 [DEBUG] Running test for command 000_run_queue_daemon
2014-09-15 00:24:53,929 [DEBUG] Test command output: 1
2014-09-15 00:24:53,929 [DEBUG] Test for command 000_run_queue_daemon passed
Затем это остается таковым до тех пор, пока процесс EB не завершится по тайм-ауту и не прекратит развертывание.
Как я могу запустить этот процесс в фоновом режиме?
Чтобы выполнить эту работу, мне пришлось запустить команду из файла с помощью хуков после развертывания
commands:
create_post_dir:
command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
ignoreErrors: true
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_workers.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
nohup php /var/app/current/artisan queue:work --daemon >/dev/null 2>&1 &