宝塔面板 Webhook 自动部署怎么做

juming
juming 初级会员超兽战士
发布于 2026-10-08 19:28 ·1 浏览 ·0 回复

学完这篇,你就能让服务器在每次 git push 之后自动拉取最新代码,不用再登录宝塔面板手动点部署。

第一步:确认站点已经是 Git 仓库

这一步的目标是让网站目录本身就是一个 Git 仓库,并且能手动拉取成功,后面才谈得上自动化。

在宝塔面板「终端」(左侧菜单)里执行:

cd /www/wwwroot/your-site
git status

如果提示 not a git repository,说明目录不是仓库,先克隆下来:

cd /www/wwwroot
rm -rf your-site
git clone git@gitee.com:yourname/your-site.git

注意:一定要先在服务器上手动执行一次 git pull,确认能成功拉取、不弹密码提示。这一步不通过,Webhook 配了也不会生效。

第二步:配置服务器 SSH 免密拉取

这一步是让服务器有权访问你的代码仓库,做完后 git pull 不再需要输入账号密码。

ssh-keygen -t rsa -b 4096 -C "deploy@server"
cat ~/.ssh/id_rsa.pub

复制输出的整段公钥,粘贴到 Git 平台:

  • Gitee:右上角头像 →「设置」→ 左侧「SSH 公钥」→ 填标题、粘贴公钥 →「确定」
  • GitHub:右上角头像 →「Settings」→「SSH and GPG keys」→「New SSH key」

注意:宝塔面板终端默认以 root 登录,公钥在 /root/.ssh/ 下。如果 Webhook 脚本以 www 用户执行,会读不到 root 的密钥,这也是后面脚本里要写完整路径的原因之一。

第三步:安装宝塔 Webhook 插件并新建任务

这一步是给服务器开一个「接收推送通知」的入口。

进入宝塔面板左侧「软件商店」→ 搜索框输入 Webhook → 找到宝塔官方插件(Linux 面板 8.x / 9.x 均支持,免费)→ 点「安装」。

安装完成后点「设置」→「添加 Webhook」,填写:

  • 名称:deploy
  • 执行脚本:
#!/bin/bash
cd /www/wwwroot/your-site || exit 1
git fetch --all
git reset --hard origin/master
git pull origin master
chown -R www:www /www/wwwroot/your-site

保存后,页面会生成一个形如 http://服务器IP:8888/hook?access_key=xxxxxxx&param=xxxxxxx 的 URL,复制它。

注意:这个 URL 里的 access_key 就相当于密码,谁拿到谁就能触发部署,不要发到公开群里。如果面板开启了 SSL,记得把 URL 开头的 http 改成 https,否则请求会被拒绝。另:脚本里的分支名按实际情况改,主分支是 main 就写 main。

第四步:在代码托管平台填 Webhook 地址

这一步是把「代码推送」和「服务器部署」连起来。

Gitee:进入仓库 → 顶部「管理」→ 左侧「Webhook」→「添加 Webhook」→ 粘贴上一步的 URL,密码留空 → 勾选「Push」→「添加」,然后点该条记录右侧的「测试」,看到返回 success 就通了。

GitHub:进入仓库 →「Settings」→ 左侧「Webhooks」→「Add webhook」→ Payload URL 粘贴地址,Content type 选 application/json,最下方选「Just the push event」→「Add webhook」。

注意:如果测试返回超时或连接失败,99% 是云服务器安全组没放行面板端口(默认 8888)。去阿里云/腾讯云控制台的「安全组」里加一条入方向 TCP 8888 规则。部分云厂商默认封禁 8888,也可以在宝塔「面板设置」里把面板端口改成 8080 之类的常见端口。

第五步:验证自动部署

在本地电脑改一行代码,提交并推送:

git add .
git commit -m "test webhook"
git push

推送完成后等 3~5 秒,回到宝塔 Webhook 页面点「日志」,能看到一条执行记录;或者直接在终端 cd /www/wwwroot/your-site && git log -1,看到刚才那条 commit 就说明成功了。

注意:git reset --hard 会丢弃服务器上所有手动改动的文件。如果你曾经直接在服务器上改过代码,先备份。前端项目还需要在脚本末尾加 npm run build,并确认服务器装了 Node。

小结

  • 部署能自动化的前提是服务器能免密 git pull,先手动跑通再配 Webhook
  • 宝塔「软件商店」安装 Webhook 插件,脚本里用 cd + git fetch + git reset --hard 三步最稳
  • Webhook URL 含密钥,别外泄;面板端口要在云服务器安全组放行
  • 推送后通过插件「日志」和 git log -1 双重验证结果
  • git reset --hard 会覆盖服务器本地改动,脚本里建议追加 chown 和构建命令
版权声明:本文来自 GJ站长论坛《宝塔面板 Webhook 自动部署怎么做》
原文链接:https://www.gj0.com/thread-1126.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~