当前位置: 首页 > article >正文

挑战Gitee仓库空间极限:Centos下自建Git Server的部署之旅

挑战Gitee仓库空间极限:Centos下自建Git Server的部署之旅

      • 引子:面对Gitee仓库空间超限的困扰
      • 第一步:安装Git服务器
        • 1.1 确保系统已更新到最新版本
        • 1.2 安装 Git
        • 1.3 验证安装
      • 第二部分:配置 Git 用户和仓库
        • 2.1 添加 Git 用户
        • 2.2 设置 Git 仓库目录
        • 2.3 创建并初始化 Git 仓库
      • 第三部分:补充和完善
        • 3.1 配置 SSH 访问
        • 3.2 权限设置
        • 3.3 提交测试
      • 结语

作者:高玉涵

时间:2024.09.24 16:54

博客:blog.csdn.net/cg_i

环境: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服务器相对简单,首先确保系统已更新到最新版本:

sudo yum update
1.2 安装 Git

在 CentOS 8 上,Git 的安装可以通过 yum 包管理器进行。需要注意的是,yum 库中的 Git 包不区分客户端和服务端,安装后即可同时满足服务端和客户端的需求。

yum -y install git
1.3 验证安装

安装完成后,可以通过以下命令验证 Git 是否正常安装,并查看其版本信息:

git version

第二部分:配置 Git 用户和仓库

2.1 添加 Git 用户

为了安全起见,建议为 Git 服务创建一个专门的用户。这里我们创建一个名为 test_git 的用户,并为其设置密码。

useradd test_git  
passwd test_git  
# 输入密码,例如:test_git(注意:实际操作中请确保密码的安全性)
2.2 设置 Git 仓库目录

选择一个目录来存放 Git 仓库。在本例中,我们将仓库存放在 /data/git/resp 目录下。

mkdir -p /data/git/resp
2.3 创建并初始化 Git 仓库

进入仓库目录,并使用 git init --bare 命令创建一个裸仓库。裸仓库是指不包含工作目录的 Git 仓库,通常用于服务器上的共享仓库。

cd /data/git/resp  
git init --bare test.git

至此,我们已经完成了 Git Server 的基本搭建。接下来,你可以通过 SSH 方式让客户端访问这个 Git 服务器,并进行代码的推送和拉取操作。

第三部分:补充和完善

3.1 配置 SSH 访问

为了确保安全性,我们通常通过 SSH 方式访问 Git 服务器。同时,创建的 Git 用户不允许登录 Shell。因此,需要在服务器上配置 SSH 服务,并生成密钥对。

  1. 启动 SSH 服务
    确保 SSH 服务已经启动,并且配置为开机自启。

    systemctl start sshd  
    systemctl enable sshd
    
  2. 生成密钥对
    在客户端机器上生成 SSH 密钥对,并将公钥复制到服务器的 ~/.ssh/authorized_keys 文件中。

    # 在客户端上生成密钥对  
    ssh-keygen -t rsa  
      
    # 将公钥复制到服务器  
    ssh-copy-id bdx_git@<服务器IP>
    
  3. 禁止 Shell 登录:

通过编辑/etc/passwd文件。

test_git:x:1002:1002::/home/test_git:/bin/bash

改为:

test_git:x:1002:1002::/home/test_git:/bin/git-shell

这样,Git 用户可以正常通过 SSH 使用 Git,但无法登录 Shell,因为我们为 Git 用户指定的是 git-shell每次登录就自动退出。

3.2 权限设置

确保 Git 仓库目录的权限设置正确,以便 test_git 用户能够访问和管理仓库。

chown -R test_git:test_git /data/git/resp/test.git
3.3 提交测试

为了验证 Git Server 的功能,可以在客户端机器上克隆仓库、提交代码并进行推送操作。

  1. 克隆仓库

    git clone test_git@<服务器IP>:/data/git/resp/test.git
    
  2. 提交代码
    在克隆下来的仓库中进行一些修改,并提交这些修改。

    cd test  
    echo "Hello, Git Server!" > README.md  
    git add README.md  
    git commit -m "Initial commit"
    
  3. 推送代码
    将提交的代码推送到服务器上的仓库中。

    git push origin master
    

如果一切正常,你应该能够成功克隆仓库、做出修改并推送到服务器上。

结语

至此,我们的 Git Server 部署之旅已经告一段落。整个部署过程虽然简单,但每一步都至关重要,稍有不慎便可能导致访问失败或数据丢失。希望这篇文章能够为面临类似困境的开发者们提供一些帮助和启示。在未来的编程旅程中,愿我们都能拥有属于自己的代码天空,自由翱翔,不再受限于空间的束缚。


http://www.kler.cn/a/323412.html

相关文章:

  • 小版本大不同 | Navicat 17 新增 TiDB 功能
  • 基于Java Web 的家乡特色菜推荐系统
  • SpringMVC学习笔记(一)
  • TCP(下):三次握手四次挥手 动态控制
  • 如何在 Ubuntu 上配置 Kotlin 应用环境 ?
  • 利用云计算实现高效的数据备份与恢复策略
  • pdb_strand_id、asym_id 和 entity_id的相互映射
  • 将Pytorch环境打包,快速部署到另一台机器上(在没有网络,或者网络环境不好的情况下推荐使用)
  • 如何禁止电脑上某个软件运行?电脑设置禁止运行软件的4个方法速成
  • 【深度学习基础模型】去噪自编码器 (Denoising Autoencoders, DAE)详细理解并附实现代码。
  • 如何正确连接和使用滑动变阻器?
  • 信息技术网络安全政策制定
  • GO Serial 学习与使用
  • 决策树与随机森林在机器学习中的应用
  • [数据集][目标检测]猪数据集VOC-2856张
  • 一文上手Kafka【下】
  • 快速订餐:Spring Boot 点餐系统
  • 搭建本地AI聊天界面:Open WebUI与Ollama实战指南
  • 63.【C语言】再议结构体(上)
  • 算法打卡:第十一章 图论part08
  • 什么是算力?cpu+显卡吗?
  • 【JAVA-数据结构】时间和空间复杂度
  • ubuntu中通过源码安装pointnet2_ops_lib
  • 360周鸿祎为什么说大模型已成茶叶蛋?
  • html+css+js实现Progress 进度条
  • 差速轮纯跟踪算法