如何在 Ubuntu 18.04 中保持 webhook 监听?

如何在 Ubuntu 18.04 中保持 webhook 监听?

我在 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 在后台保持监听,以便任何时候GitHubVPS 上有新的提交时都能获取最新的代码?

答案1

经过多次尝试和研究,我找到了一种方法,即安装 Supervisor 来保持 Webhook Server 运行。原文是这里

文章中提到的步骤摘录:

  1. 安装主管:
sudo apt install supervisor
  1. 导航到conf.d文件夹
cd /etc/supervisor/conf.d
  1. 创建配置文件:
sudo nano webhooks.conf
  1. 在配置文件中添加以下内容,用您的值替换用户名、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>"
  1. 保存并关闭配置文件
  2. 执行以下命令
touch <path to your hooks JSON file>/supervisor.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start webhooks:*

此后,主管将保持您的 webhook 服务器保持运行。

相关内容