零基础搞定宝塔面板Git代码管理,从配置到自动部署
很多新手用宝塔面板建站后,每次更新代码都要手动上传FTP,既麻烦又容易漏文件。
其实宝塔自带了Git代码管理功能,配置好后只要push代码,服务器就自动拉取更新。
下面我用零基础都能看懂的方式带你走一遍。
前置准备
- 一台已经安装好宝塔面板(Linux版)的服务器,能正常访问面板后台。
- 一个远程Git仓库(推荐Gitee或GitHub),里面存着你的网站代码。
- 用于验证的测试文件,比如在仓库里放一个
test.txt。 - 宝塔面板已开放22端口(SSH),Webhook一般用8888或自定义端口,记得在安全组放行。
注意:如果你用的是云服务器(阿里云/腾讯云等),请在控制台安全组和宝塔“安全”页同时放行需要的端口。
分步操作
第一步:在宝塔中安装Git
登录宝塔面板 → 左侧软件商店 → 搜索“Git” → 找到“Git”或者“Git版本管理”(一般两个同名,点第一个) → 点击安装 → 选择极速安装,等待完成。
安装后不需要额外配置,宝塔会自动把Git加入系统PATH。
第二步:生成SSH密钥(并添加到远程仓库)
打开宝塔“终端”(左侧菜单 → 终端),输入以下命令生成密钥(一路回车即可):
ssh-keygen -t rsa -b 4096 -C "你的邮箱@example.com"生成后查看公钥:
cat ~/.ssh/id_rsa.pub复制输出的整段内容,然后登录你的Gitee/GitHub → 个人设置 → SSH公钥 → 添加公钥,标题随意,粘贴并保存。
第三步:在宝塔中添加Git仓库
- 宝塔左侧菜单 → 代码仓库(如果没有这个菜单,先去软件商店安装“宝塔代码仓库”插件,免费)。
- 点击“添加仓库”,填写:
- 仓库名称:自己起名,例如
myblog - 仓库地址:复制远程仓库的HTTPS或SSH链接(推荐SSH,例如
git@gitee.com:你的名字/仓库名.git) - 分支:默认
master或main,看你的仓库 - 目标目录:填你的网站根目录,例如
/www/wwwroot/你的站点 - 账户信息:第一次用SSH,选择“密钥认证”,系统会自动使用你刚才生成的密钥
- 点击“确定”,等待宝塔自动拉取代码。
如果拉取成功,目标目录下就会出现仓库的文件。
如果失败,看第四步。
第四步:配置Webhook实现代码自动拉取
回到宝塔“代码仓库”列表,找到刚添加的仓库,点击“设置” → 找到 Webhook 选项卡。
- 复制生成的Webhook地址(类似
http://你的服务器IP:8888/xxxx) - 登录远程仓库(Gitee/GitHub) → 进入仓库 → 管理 → WebHooks → 添加Webhook,粘贴上面的地址,勾选“Push”事件,保存。
以后每次你往这个仓库push代码,远程仓库就会通知宝塔自动拉取最新代码。
避坑指南
- SSH密钥不匹配:如果你原来服务器上已经有密钥,但没加到远程仓库,会报错
Permission denied (publickey)。请重新生成并检查~/.ssh/id_rsa.pub内容是否已添加到远程仓库。 - 目标目录不为空:如果网站目录已经有文件(例如你之前手动上传过),宝塔拉取时会提示“目录非空”,可先清空目录或复制备份后再操作。
- Webhook超时无响应:检查宝塔安全组是否放行了Webhook使用的端口(默认8888),以及远程仓库能否访问服务器IP。如果是本地环境,内网穿透请用frp等。
- 权限问题:拉取后网站文件用户组可能不是
www,导致宝塔无法正常读取。可以在宝塔“文件”中选择网站目录 → 权限 → 设置为www用户和组。
高频问题解答
问:我添加仓库后一直显示“正在拉取”或“失败”,怎么排查?
答:先点仓库右侧的“终端”图标,或者用SSH连接服务器,手动执行git clone 仓库地址测一下能否正常拉取。如果手动能拉取,宝塔一般也可以;如果手动失败,基本是密钥问题。
问:Webhook自动拉取后,网站需要重启吗?
答:大部分静态网站或动态语言(如PHP)不需要重启,文件更新即时生效。如果用了Nginx缓存或PHP Opcache,建议在Webhook请求里附带一个清除缓存的脚本(单独写个/webhook-clear-cache.php文件,用宝塔定时任务或Webhook直接调用)。
问:我有多台服务器,能同时用同一个Webhook吗?
答:不行,一个Webhook地址对应一台服务器上的一个仓库。多台需要各自配置独立的Webhook。
问:代码拉取后,之前手工修改的文件会丢失吗?
答:会的。自动拉取会强制覆盖目标目录(git pull)。如果你有本地修改,请先提交到远程仓库,或者使用.gitignore排除不想要覆盖的文件。
效果验证
- 登录远程仓库,在
test.txt里随便加一句话并提交。 - 用浏览器访问你的网站(或直接打开
/www/wwwroot/你的站点/test.txt),如果在1分钟内页面内容更新了,说明自动拉取成功。 - 或者观察宝塔“代码仓库”中的“拉取日志”,看到
Success和最新的提交信息即正确。 - 查看Webhook记录:远程仓库设置页面 → WebHooks → 最近递送,显示200状态码表示成功。
遇到任何问题,优先看宝塔“日志”和远程仓库的Webhook递送记录,错误信息基本能定位原因。
如果你正在处理宝塔面板Git代码管理,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。