本地私有Git仓库存储建站与中转脚本
为什么要用私有Git仓库管理建站脚本?
做网站运维时经常需要编写或修改建站脚本(比如备份脚本、部署脚本、中转迁移脚本)。
如果每次都用U盘复制或者直接在服务器上编辑,很容易丢失版本、改错无法回退。搭建一个本地私有Git仓库,既可以安全存储脚本,又能通过Git完成版本控制和多服务器之间的中转传输。
本文全程面向零基础,让你跟着步骤走就能跑通。
准备条件
- 一台Linux服务器(CentOS 7+或Ubuntu 18.04+),本文以CentOS 7为例。
- 确保服务器已联网,有sudo权限。
- 客户端电脑(Windows/Mac/Linux)安装Git(下载地址:https://git-scm.com/downloads)。
- 知道如何用SSH登录服务器(如使用Xshell、Termius或终端)。
如果你还没有安装Git,先执行下面命令安装:
sudo yum install -y git # CentOS
sudo apt install -y git # Ubuntu
第一步:在服务器上创建裸仓库
裸仓库(bare repository)只包含Git版本数据,没有工作目录,专门用作中央存储。
- 登录服务器,切换到你想存放仓库的目录,比如
/opt/git:
sudo mkdir -p /opt/git
sudo chown -R $USER:$USER /opt/git
cd /opt/git
- 初始化一个裸仓库,名字建议和项目相关,比如
build-scripts.git:
git init --bare build-scripts.git
看到输出 Initialized empty Git repository in /opt/git/build-scripts.git/ 说明成功。
第二步:配置SSH免密访问
为了安全且方便地推送代码,建议使用SSH密钥对。
- 在客户端电脑生成SSH密钥(如果已有可跳过):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
一路回车,生成的公钥通常在~/.ssh/id_rsa.pub。
- 将公钥内容添加到服务器的
~/.ssh/authorized_keys文件中(假设你使用普通用户webadmin登录):
ssh-copy-id webadmin@你的服务器IP
或者手动复制公钥内容,在服务器上执行:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
- 测试免密登录:
ssh webadmin@你的服务器IP如果不提示密码即成功。
第三步:在客户端初始化本地仓库并推送脚本
- 在客户端创建一个本地文件夹,比如
my-scripts:
mkdir my-scripts
cd my-scripts
git init
- 把你写好的建站脚本(比如
backup.sh、deploy.sh)复制到该文件夹。 - 添加文件并提交:
git add .
git commit -m "初始化建站脚本"
- 添加远程仓库地址(注意替换为你的服务器IP和仓库路径):
git remote add origin ssh://webadmin@你的服务器IP/opt/git/build-scripts.git
- 推送代码到服务器:
git push -u origin master
如果提示master -> master成功,说明脚本已安全存储在服务器私有仓库中。
第四步:从另一台服务器中转拉取脚本
当你想在其他服务器(比如另一台Web服务器)上使用相同的脚本时,可以用中转仓库管理。
- 在目标服务器上安装Git并配置SSH密钥(重复第二步,但公钥要添加到你仓库服务器的
~/.ssh/authorized_keys)。 - 克隆仓库:
git clone ssh://webadmin@你的仓库服务器IP/opt/git/build-scripts.git
- 之后脚本更新只需在仓库服务器推送,目标服务器执行
git pull即可同步最新版本。
常见避坑指南
- 权限不足无法推送:检查服务器仓库目录的属主和权限,确保运行SSH的用户对
/opt/git/build-scripts.git有读写权限。 - Git提示“拒绝连接”:先确认服务器SSH服务是否开启(
systemctl status sshd),防火墙是否放行22端口。 - 文件过大导致推送失败:Git默认单文件不能超过100MB。如果脚本包含大二进制文件,建议使用Git LFS或拆分存储。
- 多个客户端同时推送冲突:先
git pull --rebase拉取最新版本再推送。
效果验证
- 查看服务器仓库的提交历史:
git log --oneline --all --graph
- 在另一台服务器拉取后,对比脚本内容是否一致:
diff <远程服务器脚本路径> <本地脚本路径>
- 修改一个脚本文件,重新推送拉取,确认版本号正确。
常见问题解答(FAQ)
Q:每次都要输SSH密码怎么办?
A:请按照第二步配置SSH密钥对,并确保私钥文件权限为600,即可实现免密访问。
Q:我用的Windows客户端,怎么操作?
A:安装Git for Windows后,在“Git Bash”中执行上述命令,路径使用正斜杠或双反斜杠。
Q:仓库可以建在非root用户的家目录下吗?
A:可以,只是路径不要放在系统关键目录,建议~/git-repos/,并注意权限设置。
通过以上步骤,你已经拥有了一个本地私有Git仓库,专门用来存储建站脚本和中转管理。
后续只要保持习惯将每次修改提交并推送,你的脚本就不再容易丢失,而且可以轻松在多台服务器间同步。
如果你在操作中遇到其他问题,欢迎在评论区留言交流。