讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在宝塔面板中利用Git钩子实现代码推送后自动部署?

星强酱_1506

星强酱_1506

发布时间:2026-03-15 22:05:31

|

617人浏览过

|

来源于php中文网

原创

可通过Git钩子实现宝塔面板网站自动部署:一、建裸仓库并配置post-receive钩子;二、统一目录权限与www用户环境;三、本地配置远程地址并推送测试;四、增强钩子错误捕获与日志记录;五、禁用钩子时可用宝塔计划任务定时拉取替代。

如何在宝塔面板中利用git钩子实现代码推送后自动部署?

如果您在宝塔面板中已配置好网站项目,并希望代码通过 Git 推送后无需手动操作即可更新服务器文件,则可借助 Git 钩子(Git Hook)触发自动部署流程。以下是实现此功能的具体步骤:

一、在服务器上初始化裸仓库并配置 post-receive 钩子

裸仓库作为接收远程推送的中转站,不包含工作目录,适合部署场景;post-receive 钩子在推送完成时执行,用于触发后续部署动作。

1、使用 SSH 登录服务器,进入网站根目录的上级目录(例如 /www/wwwroot/)。

2、执行命令创建裸仓库:git init --bare myproject.git。

3、进入该裸仓库的 hooks 目录:cd myproject.git/hooks。

4、创建或编辑 post-receive 文件,添加如下内容:

#!/bin/bash
git --work-tree=/www/wwwroot/myproject --git-dir=/www/wwwroot/myproject.git checkout -f

5、赋予执行权限:chmod +x post-receive。

二、配置网站运行目录权限与用户环境

宝塔面板默认以 www 用户运行网站,而 Git 钩子脚本常以 root 或其他用户执行,若权限不一致会导致文件属主错误或写入失败,需统一部署目标目录的归属和权限。

1、执行命令将网站目录属主设为 www:chown -R www:www /www/wwwroot/myproject。

2、确保 www 用户对裸仓库目录具有读取权限:chmod -R 755 /www/wwwroot/myproject.git。

3、若钩子中调用 git 命令报 “command not found”,需确认 www 用户环境变量中包含 git 路径,可通过在钩子开头添加 export PATH="/usr/local/git/bin:$PATH"(路径依实际 git 安装位置调整)。

三、在本地仓库配置远程地址并推送测试

本地仓库需将服务器裸仓库设为远程源,推送时触发钩子执行部署逻辑。

1、在本地项目根目录执行:git remote add production user@server_ip:/www/wwwroot/myproject.git(user 替换为服务器用户名,server_ip 替换为实际 IP)。

2、提交一次变更:git add . && git commit -m "deploy test"。

3、执行推送:git push production master(分支名按实际调整)。

4、检查服务器 /www/wwwroot/myproject 目录下文件是否已同步更新。

四、增强部署可靠性:加入错误捕获与日志记录

原始钩子缺乏异常反馈机制,一旦出错难以定位;添加日志输出与退出状态判断可提升可维护性。

1、修改 post-receive 文件,替换为以下内容:

#!/bin/bash
REPO=/www/wwwroot/myproject.git
WORK_TREE=/www/wwwroot/myproject
LOG_FILE=/www/wwwroot/myproject-deploy.log

echo "[$(date)] Deploy started" >> $LOG_FILE
git --work-tree=$WORK_TREE --git-dir=$REPO checkout -f || { echo "[$(date)] Checkout failed" >> $LOG_FILE; exit 1; }
chown -R www:www $WORK_TREE >> $LOG_FILE 2>&1
echo "[$(date)] Deploy finished" >> $LOG_FILE

2、保存后再次执行 chmod +x post-receive。

3、推送后查看 /www/wwwroot/myproject-deploy.log 确认各步骤执行状态。

五、使用宝塔计划任务替代钩子(备用方案)

当服务器禁用 shell 钩子或权限策略严格限制时,可改用定时拉取方式模拟自动部署,依赖宝塔内置的计划任务功能。

1、在服务器上为网站目录初始化非裸 Git 仓库:cd /www/wwwroot/myproject && git init && git remote add origin user@server_ip:/www/wwwroot/myproject.git。

2、在宝塔面板中进入「计划任务」,创建新任务:Shell 脚本 类型,执行周期设为每分钟或每5分钟。

3、脚本内容填写:cd /www/wwwroot/myproject && git pull origin master 2>/dev/null。

4、勾选「执行前先检测 Web 服务是否运行」并保存任务。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Flowith
Flowith Hot

Flowith是一款基于画布和智能体工作流的 AI 协作工作空间。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

更多
Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

0

2026.11.03

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

0

2026.11.03

Tailwind CSS 常用类名怎么记
Tailwind CSS 常用类名怎么记

Tailwind CSS 类名很多,先按布局、间距、文字、颜色和状态分组记忆,再通过官方文档检索具体写法。本专题结合类名排序、动态拼接失效、自定义实用类等问题,帮助你建立常用类名的速查方法。

0

2026.11.03

码上飞入口地址合集
码上飞入口地址合集

本专题汇总了码上飞(CodeFlying)的官方入口地址合集,涵盖官网主站及网页版在线使用入口,支持注册登录后直接在线体验零代码AI应用生成。同时整理了APP端下载渠道与小程序入口,助你快速访问平台,通过自然语言描述需求即可生成应用、小程序或网站。

0

2026.11.03

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

20

2026.11.02

Uvicorn使用教程
Uvicorn使用教程

本专题汇总了Uvicorn使用教程与启动运行指南,涵盖其作为Python ASGI服务器的定位与特点,以及命令行启动(uvicorn main:app --reload)、参数配置(host/port/workers)、程序内嵌运行与Gunicorn结合部署等核心用法。同时整理了热重载调试、日志配置与生产环境部署优化等技巧,助你快速掌握Uvicorn的运行与配置。

20

2026.11.02

Uvicorn安装配置教程
Uvicorn安装配置教程

本专题汇总了Uvicorn的安装配置教程与部署指南,涵盖通过pip安装Uvicorn、启动FastAPI/Starlette应用、开发模式热重载(--reload)及多进程工作模式配置等核心操作。同时整理了结合Gunicorn的生产部署方案、HTTPS与反向代理配置及性能调优技巧,助你快速完成Uvicorn服务的安装与上线部署。

20

2026.11.02

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

120

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

100

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn