以 .ebextensions/ 中的以下 .config 文件为例
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 进程超时并放弃部署。
我怎样才能让它作为后台进程运行?
答案1
为了完成这项工作,我必须使用部署后挂钩从文件运行命令
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 &