很多开发者在更新网站或项目时,还在用FTP上传文件或者手动复制粘贴代码。这种方式不仅效率低,还容易出错,甚至可能误删重要数据。Git部署的核心思路是利用服务器的钩子脚本,当你把代码推送到远程仓库时,服务器自动拉取最新代码并覆盖线上文件。下面带你一步步跑通整个流程,全程避开常见坑点。
准备基础运行环境
先准备一台能访问外网的Linux服务器,推荐Ubuntu或CentOS系统。依次安装Git、Web服务软件如Nginx或Apache,以及SSH服务。确保你的本地电脑已经配置好Git账号,并且能通过SSH密钥免密登录服务器。这一步是地基,地基打牢后面才不折腾。安装完成后,用git version命令核对版本,确认所有组件都能正常响应。如果网络受限,记得提前配置国内镜像源加速下载,避免中途超时断连影响后续操作。
创建裸仓库与用户隔离
接着在服务器上创建裸仓库。普通仓库会带着工作区文件,不适合做纯代码托管。执行mkdir创建一个专属目录,然后进入该目录运行git init --bare命令。这样服务器就拥有了一个空的版本库,专门用来接收你本地推送的代码。注意权限问题,最好给这个目录设置专门的系统用户,避免直接用root操作带来安全风险。新建用户后,将仓库目录归属权切换到该用户名下,后续所有操作都由它代为执行,保障系统底层安全。
编写核心钩子脚本
核心步骤是编写钩子脚本。在裸仓库的hooks目录下,会有一个post-receive.sample文件。把它复制一份改成post-receive,去掉.sample后缀后编辑。脚本内容主要包含几行关键命令:第一行设置工作目录路径,第二行执行git checkout --force来强制检出当前分支的最新代码。记得在首行加上#!/bin/bash声明解释器。写完后一定要赋予执行权限,否则服务器根本不会调用它。如果项目需要编译构建,可以在这里追加make或npm run build指令,实现一键部署。
处理文件权限与路径映射
完成脚本配置后,需要处理权限和路径映射。Web服务的运行用户通常不是git用户,直接切换可能导致新文件权限错乱,导致网站无法读取。可以在脚本里加入chown命令把文件所有权交给www-data或者nginx用户。同时检查目标站点的根目录是否留出了空间,如果之前有残留文件,建议提前备份清理,防止新旧代码冲突。同步完成后,给静态资源加上合理的读取权限,保证前端文件能正常加载,避免出现白屏现象。
本地推送与验证测试
现在可以开始测试推送了。回到本地项目目录,初始化git仓库,添加远程地址指向刚才创建的服务器裸仓库路径,格式通常是ssh用户名@服务器ip:/路径/仓库名.git。执行git add和commit提交改动,最后push到主分支。这时候观察服务器终端,应该能看到脚本自动运行,代码瞬间同步到网站目录。打开浏览器刷新页面,确认更新生效。如果看到空白页或报错,优先检查Web服务日志定位具体原因,不要盲目重启服务。
排错技巧与安全加固
实际使用中难免遇到坑。最常见的是权限拒绝或者钩子没触发。排查时先看服务器日志,确认ssh连接正常。其次检查post-receive脚本的换行符,Windows下编辑容易混入CRLF,导致bash解析失败,务必用Linux自带的编辑器保存。安全方面也不能忽视,裸仓库默认对所有人开放读写,生产环境建议搭配Webhook或者限制特定IP推送。可以在脚本开头加一段校验逻辑,只接受指定来源的请求。定期清理不必要的分支,保持仓库整洁,让部署链路始终保持清爽高效。




