使用 systemd 运行 Horizon

使用 systemd 运行 Horizon

Horizon Systemd.png

Horizon 可以轻松的处理 Laravel Redis 队列,并且能够很容易的监控任务的指标。
在官方文档中,Horizon 使用 Supervisor 来作为进程管理器。
最近几年的 Linux 基本都开始采用 systemd 来管理进程,我们再也不用写麻烦的 init 脚本了。本文就教你怎么用 systemd 来启动 Horizon。

首先要知道一个概念 Unit(单元),systemd 中所有可以管理的资源统称为 Unit。Unit 分为 12 种,比如 service、target、device、mount、timer……,我们要用到的就是这个 service。

我们创建的 service 文件会放在 /etc/systemd/system/ 目录下,现在就开始写 service 文件吧。

vim /etc/systemd/system/horizon.service

以下是写好的 service 文件,⚠️注意修改工作目录

[Unit]
# 描述
Description=Laravel Horizon
# 表明本服务要在 mysql 和 redis 之后启动,Laravel 依赖 mysql,Horizon 依赖 redis
After=mysqld.service redis-server.service

[Service]
# !!!这里修改为laravel项目根目录
WorkingDirectory=/project/laravel/root
# 这里可以指定运行的用户
User=www
Group=www
# 启动命令,php 建议使用绝对路径
ExecStart=/usr/bin/php artisan horizon
# 停止命令,使用 horizon 提供的优雅停止方法
ExecStop=/usr/bin/php artisan horizon:terminate
# 可以控制服务在什么情况下重新启动,这里设置为异常退出时重新启动
Restart=on-failure
# 重新启动的前等待的时间
RestartSec=30s
# 指定正确退出的代码,一些没有处理 TERM 信号的程序退出代码会是 143 ,Horizon 的退出代码是 0
SuccessExitStatus=0

[Install]
# 指定在 多用户 模式下启动,就是一般的命令行模式啦,也包括图形界面模式
WantedBy=multi-user.target

改好之后保存一下 :wq
然后重新加载配置文件:

systemctl daemon-reload

现在来启动服务:

systemctl start horizon.service

正常启动之后是不会有输出的,我们可以通过 status 命令来查看状态:

systemctl status horizon.service

file

看到绿色的 running 了吗,那就是正常运行了,下面可以看到启动的进程情况,这里是三个默认的 work 进程。

如果更新了代码,我们可以使用 restart 命令来重启 Horizon 进程,使用新的代码运行:

systemctl restart horizon.service

使用 enable 命令可以指定服务开机启动:

systemctl enable horizon.service

这样下次重启的时候 Horizon 就自己启动啦~

如果不再需要自动启动,那就用 disable 命令:

systemctl disable horizon.service

当然 disable 命令并不会马上停止正在运行的服务,它只是让服务在下次开机的时候不自动启动,我们可以使用 stop 命令来直接停止正在运行服务:

systemctl stop horizon.service

最后还有个查看 systemd 的日志的命令 journalctl
我们可以这样查看一个服务输出的日志:

journalctl -u horizon.service

加上参数 -f 可以看到实时输出的日志。

file

Laravel YES !

本帖由系统于 1年前 自动加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 2

赞赞赞, 但是我们这还是都要的 supervisor

1年前

这确实方便多了。

1年前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
首席划水官 @ 家里蹲
文章
1
粉丝
2
喜欢
43
收藏
4
排名:451
访问:3232
私信
所有博文