Linux 服务器搭建如何配置 Git 自动化部署环境

作者:袖梨 2026-08-16

用 Git 的 post-receive 钩子可实现轻量可靠自动化部署,核心是推送即自动检出到 目录;需配置专用 git 用户、裸仓库、钩子脚本及权限,全程走 SSH 加密,适合中小团队或内网环境。

直接用 Git 自带的 post-receive 钩子就能实现轻量、可靠、无需额外服务的自动化部署,适合中小团队或内网环境。核心是让代码一推送上来,服务器就自动检出到 目录,不依赖 Jenkins 或 Webhook 服务。

准备基础环境

确保服务器已安装 Git 并创建专用用户(如 git),禁止其交互式登录,只允许 Git Shell 访问:

  1. 安装 Git(CentOS/AlmaLinux):yum install -y git;Ubuntu/Debian:apt install -y git
  2. 新建用户:useradd -m -s /usr/bin/git-shell git
  3. 禁用密码登录,仅保留 SSH 密钥认证:编辑 /etc/passwd,将 git 用户末尾改为 /usr/bin/git-shell
  4. 为部署目标目录(如 /var/www/myapp)设置属主:chown -R git:www-data /var/www/myapp(若用 Nginx,组通常为 www-datanginx

初始化裸仓库并配置钩子

在服务器上创建裸仓库(.git 结尾),然后编写 post-receive 脚本:

  1. 创建裸库:mkdir -p /home/git/myapp.git && cd /home/git/myapp.git && git init --bare
  2. 编辑钩子:vim hooks/post-receive,内容如下:
#!/bin/bashGIT_WORK_TREE=/var/www/myapp git checkout -f
  1. 赋予执行权限:chmod +x hooks/post-receive
  2. 确保 git 用户对 /var/www/myapp 有写权限(可加 setgid 保证新文件继承组权限)

本地推送并验证流程

本地项目初始化后,添加远程地址并推送,触发自动部署:

  1. 本地执行:git remote add origin git@your-server-ip:/home/git/myapp.git
  2. 推送主分支:git push origin main(或 master
  3. 成功后,/var/www/myapp 下会立即出现最新代码文件
  4. 若需构建(如前端打包),可在 post-receive 中追加命令,例如:

    GIT_WORK_TREE=/var/www/myapp git checkout -f

    cd /var/www/myapp && npm ci && npm run build

安全与维护要点

避免权限混乱和意外覆盖,几个关键动作不能跳过:

  1. 防火墙只放行 SSH(22 端口),不暴露 Git 端口;Git 操作全程走 SSH 加密通道
  2. 每次更新钩子脚本后,建议手动测试:sudo -u git GIT_WORK_TREE=/var/www/myapp git --git-dir=/home/git/myapp.git checkout -f
  3. 钩子内所有路径用绝对路径,避免因工作目录不确定导致失败
  4. 日志可选加到钩子末尾:echo "$(date): Deployed $(git rev-parse HEAD)" >> /var/log/git-deploy.log

相关文章

精彩推荐