如何在服务器上安装 Git 实现同步?

在服务器上部署Git并实现代码自动同步到网站,不仅能提升团队协作效率,还能实现秒级更新发布,以下是经过实战验证的标准化流程:

**一、核心操作流程

**1. 安装Git

怎么在服务器上安装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  # 加入网站用户组

**3. 初始化Git仓库

sudo su - gitdeploy
mkdir /home/gitdeploy/website.git && cd $_
git init --bare  # 创建裸仓库

**4. 配置自动化钩子

创建钩子脚本:

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

关键权限设置:

怎么在服务器上安装git同步
chmod +x /home/gitdeploy/website.git/hooks/post-receive
chown -R gitdeploy:gitdeploy /home/gitdeploy

**5. 本地开发机配置SSH密钥

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登录(必做)

怎么在服务器上安装git同步
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

评论