可通过配置宝塔WebHook实现Git推送即部署:一、安装启用WebHook插件;二、创建含git pull等指令的deploy.sh脚本并赋权;三、在WebHook中添加带密钥和参数的钩子;四、在Git平台配置回调URL;五、可选配置SSH免密访问确保拉取成功。

如果您已在服务器部署宝塔面板并拥有 Git 仓库,但每次代码更新后仍需手动执行 git pull 操作,则可通过配置 WebHook 实现推送即部署。以下是实现该功能的具体步骤:
一、安装并启用宝塔WebHook插件
宝塔WebHook 是一个独立运行的轻量级服务,用于接收外部 HTTP 请求并触发本地 Shell 脚本。它不依赖网站运行,需通过软件商店安装并启动。
1、登录宝塔面板,在左侧菜单栏点击「软件商店」。
2、在搜索框中输入「WebHook」,找到「宝塔WebHook」插件并点击「安装」。
3、安装完成后,返回「软件商店」列表,确认状态为「已启动」;若未启动,点击右侧「启动」按钮。
二、创建WebHook执行脚本
该脚本负责切换至项目目录、拉取最新代码、修正权限,并可扩展重启进程等操作。脚本必须具备可执行权限,且路径需与后续 WebHook 配置一致。
1、在宝塔面板中进入「文件」管理,导航至 /www/wwwroot/your-domain.com(即您的网站根目录,确保该目录下已存在 .git 文件夹)。
2、右键空白处 → 「新建文件」,命名为 deploy.sh。
3、双击打开该文件,粘贴以下内容(请将 /www/wwwroot/your-domain.com 替换为实际项目路径):
#!/bin/bash
cd /www/wwwroot/your-domain.com
git pull origin master
chown -R www:www /www/wwwroot/your-domain.com
chmod -R 755 /www/wwwroot/your-domain.com
4、保存后,右键点击该文件 → 「权限」→ 勾选「可执行(x)」→ 点击「确定」。
三、在宝塔WebHook中添加钩子配置
此步骤将定义请求入口、密钥验证逻辑及脚本执行路径,是整个自动部署链路的调度中枢。
1、在宝塔面板左侧菜单点击「WebHook」→ 「添加」。
2、填写配置项:
名称:自定义,如「git-auto-deploy」;
访问密钥:设置一个强随机字符串,例如 aB3xK9mQpL2v;
参数名:填 param(与脚本中 变量对应);
参数值:填 pull(用于条件判断);
执行脚本:填入完整绝对路径,例如 /www/wwwroot/your-domain.com/deploy.sh。
3、点击「提交」保存配置。
四、在Git平台配置WebHook回调地址
Git 平台(如 Gitee、GitHub、GitLab)将在每次 push 后向该地址发起 POST 请求,触发宝塔WebHook 执行脚本。URL 中必须携带密钥与参数,否则请求会被拒绝。
1、登录您的 Git 仓库后台,进入「Settings」→ 「Webhooks」或「WebHook 管理」。
2、点击「Add webhook」或「新建 WebHook」。
3、填写回调 URL,格式为:
http://您的服务器IP:50000/hook?access_key=aB3xK9mQpL2v¶m=pull(端口 50000 为宝塔WebHook 默认监听端口;若修改过,请同步调整)。
4、Content type 选择 application/json 或 application/x-www-form-urlencoded(Gitee 推荐后者)。
5、触发事件勾选「Push events」,保存。
五、验证权限与SSH免密访问(可选但推荐)
若使用 HTTPS 方式拉取私有仓库,需确保脚本中 git pull 不因认证失败中断;若使用 SSH 方式,则需配置免密登录,避免交互式密码提示阻塞自动化流程。
1、在服务器终端执行:
sudo -u www -s 切换到 www 用户环境(宝塔WebHook 默认以 www 用户身份执行脚本)。
2、执行:
ssh-keygen -t rsa -b 4096 -C "webhook@server" 生成密钥对(默认保存在 /www/.ssh/id_rsa)。
3、将公钥内容(cat /www/.ssh/id_rsa.pub)复制并添加至 Git 平台的「Deploy Keys」或「SSH 公钥」设置中。
4、测试连接:
ssh -T git@gitee.com(或对应 Git 平台域名),返回 success 即表示免密配置成功。










