挑战Gitee仓库空间极限:Centos下自建Git Server的部署之旅
-
-
- 引子:面对Gitee仓库空间超限的困扰
- 第一步:安装Git服务器
-
- [1.1 确保系统已更新到最新版本](#1.1 确保系统已更新到最新版本)
- [1.2 安装 Git](#1.2 安装 Git)
- [1.3 验证安装](#1.3 验证安装)
- [第二部分:配置 Git 用户和仓库](#第二部分:配置 Git 用户和仓库)
-
- [2.1 添加 Git 用户](#2.1 添加 Git 用户)
- [2.2 设置 Git 仓库目录](#2.2 设置 Git 仓库目录)
- [2.3 创建并初始化 Git 仓库](#2.3 创建并初始化 Git 仓库)
- 第三部分:补充和完善
-
- [3.1 配置 SSH 访问](#3.1 配置 SSH 访问)
- [3.2 权限设置](#3.2 权限设置)
- [3.3 提交测试](#3.3 提交测试)
- 结语
-
作者:高玉涵
时间:2024.09.24 16:54
环境:Windows 10 专业工作站版 22H2、Linux centos8 5.13.6-1.el8.elrepo.x86_64
引子:面对Gitee仓库空间超限的困扰
在无尽的编程探索与知识积累的征途中,我将每一行代码、每一次创新都精心编织进Git的代码库中,而Gitee,则是我选择的这片数字海洋中的港湾。然而,随着项目如繁星般增多与膨胀,免费版Gitee那看似宽广实则有限的1024MB存储空间,渐渐成为了我前行路上的一块巨石(囊中羞涩,无奈之选)。
每一次向仓库中倾注心血,都如同在狭窄的巷弄中穿梭,既要确保项目的完整无缺,又要时刻警惕不触碰那空间的天花板。我精心策划着仓库的每一个角落,力求在宝贵的存储空间与日益增长的项目需求间寻找到那几乎不可能存在的完美平衡点。但遗憾的是,无论我如何精打细算,仓库的大小还是如同脱缰野马,一路狂奔,直至撞上了那道无情的界限。
就在今日,当我满怀期待地准备将最新的智慧结晶推送至Gitee时,不出所料,迎接我的却是那冰冷刺骨的提示:"remote: This repository(including wiki) size 1980.14 MB, exceeds 1024.00 MB."。那一刻,我的心仿佛被重锤击中,长久以来的辛勤与坚持,在这一刻似乎都化为了泡影(瞥见Gitee扩容费用的那一刻,心更痛了)。
幸运的是,我在网上有一台拥有500GB空间,24小时在线的虚拟主机,其费用仅是Gitee扩容费用的三分之一,而容量却是它的十倍有余。这台虚拟主机,就像是在茫茫黑夜中突然亮起的一盏明灯,不仅照亮了我的前行之路,更点燃了我心中的希望之火。
于是,我下定决心,要充分利用这份宝贵的资源,亲手打造一个专属的Git Server。这样,我不仅能彻底摆脱空间有限的束缚,让代码在无尽的数字天空中自由翱翔,还能将我的创意与努力紧紧锁在私有的空间里,为它们筑起一道坚不可摧的安全屏障。
接下来,我将详细记录整个服务部署的过程,以便为同样面临类似困境的同学们提供参考和借鉴。让我们一起踏上这段充满挑战与收获的旅程吧!
第一步:安装Git服务器
1.1 确保系统已更新到最新版本
在Centos上安装Git服务器相对简单,首先确保系统已更新到最新版本:
shell
sudo yum update
1.2 安装 Git
在 CentOS 8 上,Git 的安装可以通过 yum 包管理器进行。需要注意的是,yum 库中的 Git 包不区分客户端和服务端,安装后即可同时满足服务端和客户端的需求。
shell
yum -y install git
1.3 验证安装
安装完成后,可以通过以下命令验证 Git 是否正常安装,并查看其版本信息:
shell
git version
第二部分:配置 Git 用户和仓库
2.1 添加 Git 用户
为了安全起见,建议为 Git 服务创建一个专门的用户。这里我们创建一个名为 test_git
的用户,并为其设置密码。
shell
useradd test_git
passwd test_git
# 输入密码,例如:test_git(注意:实际操作中请确保密码的安全性)
2.2 设置 Git 仓库目录
选择一个目录来存放 Git 仓库。在本例中,我们将仓库存放在 /data/git/resp
目录下。
shell
mkdir -p /data/git/resp
2.3 创建并初始化 Git 仓库
进入仓库目录,并使用 git init --bare
命令创建一个裸仓库。裸仓库是指不包含工作目录的 Git 仓库,通常用于服务器上的共享仓库。
shell
cd /data/git/resp
git init --bare test.git
至此,我们已经完成了 Git Server 的基本搭建。接下来,你可以通过 SSH 方式让客户端访问这个 Git 服务器,并进行代码的推送和拉取操作。
第三部分:补充和完善
3.1 配置 SSH 访问
为了确保安全性,我们通常通过 SSH 方式访问 Git 服务器。同时,创建的 Git 用户不允许登录 Shell。因此,需要在服务器上配置 SSH 服务,并生成密钥对。
-
启动 SSH 服务 :
确保 SSH 服务已经启动,并且配置为开机自启。
shellsystemctl start sshd systemctl enable sshd
-
生成密钥对 :
在客户端机器上生成 SSH 密钥对,并将公钥复制到服务器的
~/.ssh/authorized_keys
文件中。shell# 在客户端上生成密钥对 ssh-keygen -t rsa # 将公钥复制到服务器 ssh-copy-id bdx_git@<服务器IP>
-
禁止 Shell 登录:
通过编辑/etc/passwd
文件。
shell
test_git:x:1002:1002::/home/test_git:/bin/bash
改为:
bash
test_git:x:1002:1002::/home/test_git:/bin/git-shell
这样,Git 用户可以正常通过 SSH 使用 Git,但无法登录 Shell,因为我们为 Git 用户指定的是 git-shell
每次登录就自动退出。
3.2 权限设置
确保 Git 仓库目录的权限设置正确,以便 test_git
用户能够访问和管理仓库。
shell
chown -R test_git:test_git /data/git/resp/test.git
3.3 提交测试
为了验证 Git Server 的功能,可以在客户端机器上克隆仓库、提交代码并进行推送操作。
-
克隆仓库:
shellgit clone test_git@<服务器IP>:/data/git/resp/test.git
-
提交代码 :
在克隆下来的仓库中进行一些修改,并提交这些修改。
shellcd test echo "Hello, Git Server!" > README.md git add README.md git commit -m "Initial commit"
-
推送代码 :
将提交的代码推送到服务器上的仓库中。
shellgit push origin master
如果一切正常,你应该能够成功克隆仓库、做出修改并推送到服务器上。
结语
至此,我们的 Git Server 部署之旅已经告一段落。整个部署过程虽然简单,但每一步都至关重要,稍有不慎便可能导致访问失败或数据丢失。希望这篇文章能够为面临类似困境的开发者们提供一些帮助和启示。在未来的编程旅程中,愿我们都能拥有属于自己的代码天空,自由翱翔,不再受限于空间的束缚。