宝塔面板Git仓库代码自动部署:零基础用宝塔面板配置Git仓

为什么需要自动部署

每次修改代码后手动上传到服务器既费时又容易漏传文件。
借助宝塔面板和Git仓库(如GitHub、Gitee或GitLab),你可以实现本地推送 → 服务器自动拉取的一键式更新。
本文面向零基础用户,从零开始配通整个流程。

准备工作清单

  • 一台安装了宝塔面板的Linux服务器(本文以CentOS 7为例,其他系统操作类似)。
  • 一个Git仓库(远程仓库或本地私有仓库均可),确保本地能正常推送代码。
  • SSH客户端(如Windows下的Putty、macOS/Linux终端)用于登录服务器。
  • 网站根目录已通过宝塔创建,假设路径为 /www/wwwroot/example.com

一步步配置自动部署

1. 创建部署专用系统用户(可选但推荐)

为了安全,建议单独创建一个系统用户用于Git操作,避免直接使用root。
登录服务器执行:

useradd -m gitdeploy
passwd gitdeploy

设置一个复杂密码,后续该用户仅用于拉取代码。

2. 生成SSH密钥并添加至Git仓库

切换到gitdeploy用户:

su - gitdeploy
ssh-keygen -t rsa -b 4096 -C "deploy@example.com"

一路回车生成无密码密钥(如需更高安全性,可设置密码)。
查看公钥:

cat ~/.ssh/id_rsa.pub

复制公钥内容,
登录你的Git仓库(如GitHub) → 进入项目 → Settings → Deploy keys → Add deploy key,
勾选“Allow write access”后保存。

3. 在宝塔面板中配置Git项目

打开宝塔面板 → 网站 → 选择你的站点 → 左侧“Git”管理。
点击“添加仓库”,填写:

  • 仓库地址:例如 git@github.com:yourname/yourproject.git
  • 分支:默认 master 或你常用的分支
  • 部署目录:填写网站根目录,如 /www/wwwroot/example.com
  • 部署用户:选择 gitdeploy(如果前面创建了);若未创建,可选 wwwroot(不推荐)
  • 是否启用自动部署:勾选“启用”
  • 部署钩子:稍后配置Webhook时会用到,先留空

点击“添加”后,宝塔会自动拉取一次代码到部署目录。
如果报错,请检查密钥是否添加正确、仓库路径是否有权限。

4. 配置Webhook实现自动触发

要让本地推送后服务器自动拉取,需要设置Webhook。
在宝塔面板的该站点Git管理页面,点击“查看钩子”复制Webhook URL。

然后登录你的Git仓库项目 → Settings → Webhooks → Add webhook:

  • Payload URL:粘贴刚才复制的URL
  • Content type:选择 application/json
  • 触发事件:勾选“Just the push event”
  • Active:勾选

保存后,Git仓库每次收到推送都会向宝塔发送请求,宝塔自动执行拉取操作。

高频问题与解决

Q1: 拉取时报“Permission denied (publickey)”

原因:SSH密钥未正确添加或用户权限不对。
解决:确认公钥已添加到Git仓库的Deploy Keys,并且部署用户(如gitdeploy)的 ~/.ssh/id_rsa.pub 内容匹配。可以先用 ssh -T git@github.com 测试连通性(第一次需确认yes)。

Q2: 拉取后网站文件权限混乱,导致网站无法访问

原因:默认拉取的文件所有者是 gitdeploy,而网站运行用户是 www
解决:在宝塔面板的Git管理页面,将部署用户改为 www(或者拉取后执行一条权限修正命令)。建议将部署目录所有者设为 www:www,并在Webhook触发时执行命令:

chown -R www:www /www/wwwroot/example.com

在宝塔的Git高级设置中,可以添加“部署后执行命令”。

Q3: Webhook触发但代码未更新

原因:Git仓库分支不匹配或本地推送未触发正确的Webhook。
解决:检查Git仓库中的Webhook记录(Recent Deliveries),查看响应是否为200。如果返回500,查看宝塔面板的错误日志。常见情况是 git pull 时本地有未提交修改导致冲突,可以在Webhook命令中改为 git fetch --all && git reset --hard origin/master(谨慎使用,会丢弃本地改动)。

避坑要点

  • 密钥权限~/.ssh 目录权限必须是 700~/.ssh/authorized_keys 可以是 600,否则SSH会拒绝连接。
  • 目录所有权:部署目录的所有者建议保持为网站运行用户(www),否则文件无法被PHP读取或写入。
  • 禁用仓库的写入保护:如果使用Deploy Key,注意勾选“Allow write access”,否则拉取成功后无法推送(但单方向拉取不需要写权限)。
  • Webhook请求来源:确保服务器防火墙没有屏蔽Git仓库的IP段,常见如GitHub的IP范围。
  • 宝塔版本:本文基于宝塔面板8.x版本,老版本可能界面位置不同,请升级或参考官方文档。

检验是否生效

  1. 在本地修改任意文件(如首页),提交并推送到远程仓库。
  2. 稍等几秒,打开浏览器访问网站,查看是否已更新。
  3. 也可以登录宝塔面板 → 网站 → Git管理,查看“部署记录”是否有新的拉取记录。
  4. 在服务器上用 git log -1 --oneline 查看最新提交是否与本地一致。

如果你正在配置宝塔面板Git仓库代码自动部署,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
这套方案稳定运行后,可以大大简化上线流程,让你更专注于业务开发。

分享到:
上一篇
宝塔面板FFmpeg视频处理配置教程:从安装到实战
下一篇
WordPress评论防垃圾设置教程
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意