![如何在 Ubuntu 18.04 中保持 webhook 监听?](https://linux22.com/image/950594/%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%2018.04%20%E4%B8%AD%E4%BF%9D%E6%8C%81%20webhook%20%E7%9B%91%E5%90%AC%EF%BC%9F.png)
我在 VPS 中设置了一个 webhook,这样每次有新的提交时它都会从 git 存储库中提取代码。我已经成功设置了它,但它只在-hooks
运行时才有效。
创建 webhook 后,我使用以下命令开始监听(将 0.0.0.0 替换为 VPS 的实际公共 IP 地址):
/usr/bin/webhook -hooks /root/webhooks/hooks.json -ip "0.0.0.0" -verbose
然后我得到以下输出:
[webhook] 2022/12/28 07:47:03 version 2.5.0 starting
[webhook] 2022/12/28 07:47:03 setting up os signal watcher
[webhook] 2022/12/28 07:47:03 attempting to load hooks from /root/webhooks/hooks.json
[webhook] 2022/12/28 07:47:03 found 1 hook(s) in file
[webhook] 2022/12/28 07:47:03 loaded: my-site.com
[webhook] 2022/12/28 07:47:03 serving hooks on http://0.0.0.0:9000/hooks/{id}
[webhook] 2022/12/28 07:47:03 os signal watcher ready
我已经在以下位置配置了 webhook GitHub
:
http://0.0.0.0:9000/hooks/my-site.com
只要[webhook] 2022/12/28 07:47:03 os signal watcher ready
屏幕上显示,webhook 就能正常工作,但如果我按下Ctrl + C
,它就会中断,并且 webhook 不再监听。
有没有办法让 webhook 在后台保持监听,以便任何时候GitHub
VPS 上有新的提交时都能获取最新的代码?
答案1
经过多次尝试和研究,我找到了一种方法,即安装 Supervisor 来保持 Webhook Server 运行。原文是这里。
文章中提到的步骤摘录:
- 安装主管:
sudo apt install supervisor
- 导航到
conf.d
文件夹
cd /etc/supervisor/conf.d
- 创建配置文件:
sudo nano webhooks.conf
- 在配置文件中添加以下内容,用您的值替换用户名、IP、路径等。
笔记:您可以使用 找到 webhook 文件夹的路径whereis webhook
。
[program:webhooks]
command=bash -c "<path to your webhook folder> -hooks <path to your hooks JSON file>/hooks.json -ip '0.0.0.0' -port '0000' -verbose"
redirect_stderr=true
autostart=true
autorestart=true
user=<user>
numprocs=1
process_name=%(program_name)s_%(process_num)s
stdout_logfile=<path to your hooks JSON file>/supervisor.log
environment=<ENVIRONMENT>="<your/environment>",USER="<user>"
- 保存并关闭配置文件
- 执行以下命令
touch <path to your hooks JSON file>/supervisor.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start webhooks:*
此后,主管将保持您的 webhook 服务器保持运行。