一个程序的 Systemd 启动
在之前的文章里,我们了解了一个webhooks的使用。那么如何使用 Systemd 启动并守护webhooks呢。
一.部署应用
首先部署程序到指定的位置。
假设,我们的程序在/foo/bar/webhook
,配置文件在/foo/bar/hooks.json
.
编写systemd配置文件
我们在/etc/systemd/system
文件夹中编写文件webhooks.service
,内容如下:
[Unit]
Description=webhooks https://github.com/adnanh/webhook
Wants=network-online.target
After=network.target
[Service]
Type=simple
ExecStart=/fool/bar/webhook -port 9001 -hooks /fool/bar/hooks.json -verbose -hotreload
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target
Alias=webhooks
配置文件解释
简单解释一下,上面的配置文件的几个参数。
Unit
区块的Description字段,是服务的简单描述。
Service
区块的字段含义如下。
- ExecStart:启动命令
- Restart:如何重启。always表示如果进程退出,总是重启
- Type:启动方式。simple意思是Ctrl+c才能退出的程序。
- User:以什么用户启动
- Group:以什么组启动
Install
区块的WantedBy字段指定,设为开机启动时,该服务所在的 Target 是multi-user.target
。Alias别名字段是指命令启动该服务时可以不用webhooks.service直接用webhooks
启动服务
# 重载配置文件
$ sudo systemctl daemon-reload
# 启动服务
$ sudo systemctl start webhooks
查看状态
如果启动失败,或者想查看日志,就要执行下面的命令。
# 查看状态
$ sudo systemctl status webhooks
# 查看日志
$ sudo journalctl -u webhooks
# 实时输出最新日志
$ sudo journalctl -f -u webhooks
在shell中输入以下命令:
journalctl -f -u webhooks
curl http://127.0.0.1:9001/hooks/test_or_your_id
如果看到日志有响应则代表服务启动成功
重启服务和停止服务
# 重启服务
$ sudo systemctl restart webhooks
# 停止服务
$ sudo systemctl stop webhooks
如果想设为开机启动,就要执行systemctl enable。
$ sudo systemctl enable webhooks
如果要取消开机启动,就要执行systemctl disable。
$ sudo systemctl disable webhooks