laravel 队列任务自启动 AND 配置定时任务
2019年4月1日1. 队列任务自启动
接下来我们还需要在服务器上配置 Supervisor 来启动 Horizon。
Supervisor 是一款进程管理工具,通过配置可以实现自动监听进程状态,如果被监听的进程发生异常退出,Supervisor 会尝试再次启动该进程。之前的安装脚本已经安装好了 Supervisor,现在来创建一个 Supervisor 配置:
1 |
$ vim /etc/supervisor/conf.d/laravel-shop.conf |
1 2 3 4 5 6 7 8 |
[program:laravel-shop-horizon] process_name=%(program_name)s command=php /var/www/laravel-shop-deployer/current/artisan horizon #需要改一下路径 autostart=true autorestart=true user=www-data redirect_stderr=true stdout_logfile=/var/www/laravel-shop-deployer/current/storage/logs/worker.log #需要改一下路径 |
program:laravel-shop-horizon
代表这个配置的名称是laravel-shop-horizon
;process_name=
代表这个进程在 Supervisor 内部的命名;command=
代表要执行的命令;autostart=true
代表这个进程跟随 Supervisor,只要 Supervisor 启动了,就启动这个进程;autorestart=true
代表要求 Supervisor 监听进程状态,假如异常退出就再次启动;user=www-data
代表以www-data
身份启动进程;redirect_stderr=true
代表输出错误信息;stdout_logfile=
代表将进程的输出保存到日志文件中。
接下来我们需要让 Supervisor 重新加载配置
1 |
$ sudo supervisorctl update |
现在通过以下命令检查是否正常运行:
1 |
$ sudo supervisorctl status |
2. 配置定时任务
1 2 |
$ crontab -e -u www-data |
其中 -e 代表编辑,-u www-data 代表我们要编辑 www-data 用户的定时任务
1 2 |
* * * * * php /var/www/laravel-shop-deployer/current/artisan schedule:run >> /var/www/laravel-shop-deployer/current/storage/logs/cron.log 2>&1 |
前面的 5 个 *
代表这个定时任务每分钟执行一次,后面的则是这个定时任务要执行的命令,同时我们使用 Linux 的管道 >>
将定时任务的输出追加到 cron.log
文件末尾,2 > &1
代表将错误输出也重定向到普通输出,即也输出到 cron.log
文件。
然后保存并退出。
现在来检查一下,输入以下命令:
1 |
$ crontab -l -u www-data |
-l
代表列出定时任务。