最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux 服务器搭建如何配置 Git 自动化部署环境
时间:2026-08-16 08:22:49 编辑:袖梨 来源:一聚教程网
用 Git 的 post-receive 钩子可实现轻量可靠自动化部署,核心是推送即自动检出到 目录;需配置专用 git 用户、裸仓库、钩子脚本及权限,全程走 SSH 加密,适合中小团队或内网环境。
直接用 Git 自带的 post-receive 钩子就能实现轻量、可靠、无需额外服务的自动化部署,适合中小团队或内网环境。核心是让代码一推送上来,服务器就自动检出到 目录,不依赖 Jenkins 或 Webhook 服务。
准备基础环境
确保服务器已安装 Git 并创建专用用户(如 git),禁止其交互式登录,只允许 Git Shell 访问:
- 安装 Git(CentOS/AlmaLinux):
yum install -y git;Ubuntu/Debian:apt install -y git - 新建用户:
useradd -m -s /usr/bin/git-shell git - 禁用密码登录,仅保留 SSH 密钥认证:编辑
/etc/passwd,将 git 用户末尾改为/usr/bin/git-shell - 为部署目标目录(如
/var/www/myapp)设置属主:chown -R git:www-data /var/www/myapp(若用 Nginx,组通常为www-data或nginx)
初始化裸仓库并配置钩子
在服务器上创建裸仓库(.git 结尾),然后编写 post-receive 脚本:
- 创建裸库:
mkdir -p /home/git/myapp.git && cd /home/git/myapp.git && git init --bare - 编辑钩子:
vim hooks/post-receive,内容如下:
#!/bin/bashGIT_WORK_TREE=/var/www/myapp git checkout -f
- 赋予执行权限:
chmod +x hooks/post-receive - 确保
git用户对/var/www/myapp有写权限(可加setgid保证新文件继承组权限)
本地推送并验证流程
本地项目初始化后,添加远程地址并推送,触发自动部署:
- 本地执行:
git remote add origin git@your-server-ip:/home/git/myapp.git - 推送主分支:
git push origin main(或master) - 成功后,
/var/www/myapp下会立即出现最新代码文件 - 若需构建(如前端打包),可在
post-receive中追加命令,例如:GIT_WORK_TREE=/var/www/myapp git checkout -f
cd /var/www/myapp && npm ci && npm run build
安全与维护要点
避免权限混乱和意外覆盖,几个关键动作不能跳过:
- 防火墙只放行 SSH(22 端口),不暴露 Git 端口;Git 操作全程走 SSH 加密通道
- 每次更新钩子脚本后,建议手动测试:
sudo -u git GIT_WORK_TREE=/var/www/myapp git --git-dir=/home/git/myapp.git checkout -f - 钩子内所有路径用绝对路径,避免因工作目录不确定导致失败
- 日志可选加到钩子末尾:
echo "$(date): Deployed $(git rev-parse HEAD)" >> /var/log/git-deploy.log