很多开发者在写完项目后,习惯用FTP或者Xshell手动把文件传到服务器,不仅效率低还容易出错。其实只要利用Git的钩子机制配合简单的Shell脚本,就能实现本地push代码后,服务器自动拉取并重启服务的全过程。下面用最直白的方式把这套流程拆解清楚,跟着做一遍就能跑通。
第一步:服务器基础环境准备
先确保你的Linux服务器已经装好了Git和Nginx。Git负责版本管理,Nginx用来托管静态页面或反向代理应用。如果还没安装,直接用系统包管理器一行命令搞定。接着创建专门用于存放项目的目录,比如varwwwmyproject。记得给这个目录设置正确的读写权限,避免后面脚本执行时报权限拒绝的错误。最后检查SSH服务是否正常开启,因为Git拉取代码默认走的是ssh协议,网络通畅是前提。
第二步:创建Git仓库与密钥配置
在代码托管平台上新建一个空白仓库,记下它的远程地址。回到服务器终端,切换到刚才建的项目目录,执行git init初始化本地仓库。接下来要解决免密登录的问题,这是实现自动化的一键核心。在服务器上生成一对SSH密钥,将生成的公钥内容完整粘贴到平台的开发者密钥设置里。测试连通性,输入git pull测试一下,如果不弹密码且能拉取数据就说明配置成功。这一步虽然稍微繁琐,但配好后能省去大量重复劳动。
第三步:编写自动化部署脚本
在服务器项目的根目录下创建一个名为deploy.sh的文件。里面的内容非常固定,主要分三步走。第一句是指令切换到项目目录,第二句是git pull origin main拉取最新代码,第三句根据项目类型执行后续操作。如果是纯前端项目,直接执行npm run build构建打包;如果是后端服务,就通过systemctl或pm2重启进程。千万别忘记给这个脚本加执行权限,chmod加x deploysh。写完后手动运行一次看看顺不顺手,有报错及时对照终端提示修改。
第四步:配置Git钩子实现触发
光有脚本还不够,得让它在推代码时自动跑起来。进入服务器的.git/hooks目录,找到post-receive.sample文件,复制一份去掉后缀改成post-receive。打开它,在第一行写上binbash声明,然后在下方调用刚才写的deploysh脚本的绝对路径。保存退出后,这个钩子就会在每次收到推送请求时自动激活。这时候整个链路就已经闭环了,本地改动只要提交并推送,服务器立马同步更新并重新加载。
第五步:本地推送与一键发布验证
现在回到你的电脑终端,正常进行代码提交操作。推送成功后,盯着服务器的终端窗口,你会看到拉取代码和重启服务的日志飞速滚动。整个过程通常只需要几秒到十几秒。去浏览器刷新地址,确认新代码已经生效。如果页面还是旧的,先清一下浏览器缓存或者检查Nginx的配置指向对不对。跑通第一次之后,以后每次更新项目都只需要敲一行推送命令,彻底告别手动上传的繁琐流程。
常见问题排查与优化建议
部署过程中最容易出现的就是权限不足或者路径写错。脚本里的所有路径一定要用绝对路径,相对路径在钩子环境下经常失效导致找不到文件。如果拉取代码报认证失败,回去核对公钥是否完全匹配且没有多余空格。对于体积较大的项目,可以在拉取命令后加上参数忽略无关的依赖文件夹,减少不必要的同步流量。定期清理服务器上的冗余分支也能保持环境清爽。掌握这套流程后,你不仅能大幅提升日常开发效率,还能轻松应对紧急热修场景,真正体验现代Web开发的便捷。



