在服务器上部署Git并实现代码自动同步到网站,不仅能提升团队协作效率,还能实现秒级更新发布,以下是经过实战验证的标准化流程:
Ubuntu/Debian sudo apt update && sudo apt install git -y CentOS sudo yum install git -y
验证安装:git --version
2. 创建专用系统用户(安全隔离)
sudo adduser gitdeploy sudo passwd gitdeploy # 设置高强度密码 sudo usermod -aG www-data gitdeploy # 加入网站用户组
sudo su - gitdeploy mkdir /home/gitdeploy/website.git && cd $_ git init --bare # 创建裸仓库
创建钩子脚本:
vim /home/gitdeploy/website.git/hooks/post-receive
#!/bin/bash TARGET="/var/www/your_site" # 网站根目录 GIT_DIR="/home/gitdeploy/website.git" BRANCH="main" while read oldrev newrev ref do if [[ $ref =~ .*/${BRANCH}$ ]]; then echo "🚀 检测到main分支变更,开始同步..." git --work-tree=${TARGET} --git-dir=${GIT_DIR} checkout -f ${BRANCH} # 权限修复 chown -R gitdeploy:www-data ${TARGET} find ${TARGET} -type d -exec chmod 755 {} \; find ${TARGET} -type f -exec chmod 644 {} \; echo "✅ 网站已更新至最新版本" fi done
关键权限设置:
chmod +x /home/gitdeploy/website.git/hooks/post-receive chown -R gitdeploy:gitdeploy /home/gitdeploy
ssh-keygen -t ed25519 # 本地生成密钥 cat ~/.ssh/id_ed25519.pub # 复制公钥
将公钥添加到服务器:
vim /home/gitdeploy/.ssh/authorized_keys
1、本地初始化项目
cd my_website git init git remote add deploy ssh://gitdeploy@你的服务器IP:/home/gitdeploy/website.git
2、触发首次部署
git add . git commit -m "首次部署" git push -u deploy main # 自动同步到/var/www/your_site
1、禁用Shell登录(必做)
sudo vim /etc/passwd 修改行:gitdeploy:x:1001:1001::/home/gitdeploy:/usr/bin/git-shell
2、防火墙规则
sudo ufw allow from 你的IP to any port 22 # 限制SSH源IP sudo ufw enable
3、仓库访问日志
sudo auditctl -w /home/gitdeploy/ -k git_access
现象 | 解决方案 |
钩子未触发 | 检查脚本权限:ls -l hooks/post-receive |
文件权限错误 | 运行:sudo chown -R gitdeploy:www-data /var/www |
SSH连接超时 | 确认防火墙放行22端口:sudo ufw status |
推送被拒绝 | 检查服务器.ssh/authorized_keys 文件权限应为600 |
分支策略:创建dev
分支测试,合并到main
触发生产环境更新
持续集成:结合GitHub Actions自动运行测试后再同步
回滚机制:git reset --hard HEAD~1 && git push -f
>个人观点:Git自动化部署彻底解决了"FTP上传时代"的版本混乱问题,但务必记住:永远不要在服务器直接修改代码!所有变更都应通过本地提交推送,这不仅是技术规范,更是团队协作的纪律,对于中小型网站,这套方案比Jenkins等工具更轻量高效,且能减少70%的部署失误。
文章摘自:https://idc.huochengrm.cn/fwq/11720.html
评论