傲渊山岳 发表于 2024-9-5 19:04:11

搭建 Git 私家服务器完整指南

搭建 Git 私家服务器完整指南

在现代软件开辟中,Git 已经成为最盛行的版本控制体系之一。虽然 GitHub、Gitee、GitLab 等公共服务提供了方便的托管平台,但有时间由于安全性、隐私或其他定制化需求,我们大概必要搭建一个自己的 Git 服务器。
这篇指南将带你从头至尾,逐步完成 Git 私家服务器的搭建。


1、引言

1.1 Git 简介

Git 是一个分布式版本控制体系,由 Linus Torvalds 于2005年开辟。它可以或许快速高效地处理从小型到大型项目的所有版本管理需求。由于其分布式的特性,每个开辟者都拥有完整的代码库历史,这意味着即使没有服务器,开辟者之间也能进行协作。

1.2 为什么要搭建私家 Git 服务器?

使用公共 Git 托管服务非常方便,但有些企业或个人开辟者大概会思量搭建自己的 Git 服务器,重要出于以下缘故原由:


[*]数据隐私:保证源代码和版本历史只存储在内部网络中,减少外部泄露的风险。
[*]定制化需求:可以根据自身需求定制服务器设置和工作流程。
[*]成本:对于大规模项目或私有项目,搭建自己的服务器大概比恒久付费使用公共服务更划算。
(小声逼逼:现在 AI 发展的确实有点猛,各个厂商都拿着自己手里的数据去训练 AI,迩来一个消息,说番茄小说在签约的协议中增加了 “ AI 训练增补协议”,要求作者同意把作品 “授权” 给平台的 AI,用于内容开辟,这真的很难评,虽然我写的代码很烂,但还是不想在不知情的情况下拿去投喂 AI 了。)


2、预备工作

在开始搭建之前,你必要确保有一个得当的情况。以下是一些推荐的设置:


[*]操作体系:大多数情况下,发起使用 Linux 发行版(如 Ubuntu、CentOS)。当然,Windows 和 macOS 也可以,但设置大概稍有不同。
[*]硬件要求:平常的项目管理中,一个最低配的 VPS(1-2GB RAM,1-2核CPU)通常足够。如果管理多个大项目或有高并发需求,发起使用更高配的服务器。
[*]网络要求:确保服务器有一个静态IP地点,以便开辟者可以或许稳固地访问。
(具体情况依照你手头的设备而定,如果你手上有云服务器,就使用云服务器进行设置。如果家里有公网 IP,也可以在家用家用服务器进行设置。如果没有公网 IP,也可以通过内网穿透,内网穿透教程还没写完,可以期待一下,哈哈哈。最后还是发起大家使用云服务器,迩来国内几大云服务器厂商做活动,38元一年,还有公网 IP,自制方便还省事,而且不仅仅可以拿来搭建 Git,还可以搭建个人网站,做测试,等等,具体买哪家就不做推荐)


3、安装和设置服务器 Git

3.1、在不同体系上安装 Git

在不同操作体系上安装 Git 的方法略有不同,这里介绍 Linux 和 Windows 的安装方法。
3.1.1、切换 root 账户

发起在操作之前先切换至 root 账户
su root
如果不切换账户,请在下列指令前添加 sudo 提权
3.1.2、在 Ubuntu 安装 Git

在 Linux 上安装 Git(以 Ubuntu 为例):
apt update
apt install git
3.1.3、在 CentOS 安装 Git

在 CentOS 上安装 Git:
yum update
yum install git

3.1.4、在 Windows 安装 Git

在 Windows 上安装 Git:

[*]前往Git for Windows官网下载安装包。
[*]运行安装步伐,按照向导进行安装。
[*]安装完成后,可以使用 Git Bash 进行 Git 操作。
3.1.5、检察安装版本

安装成功后,可以看一下自己安装的版本
git --version

3.2、不测题目

我在使用阿里云服务器的时间安装 git 时碰到 yum 源安装软件安装失败题目,如果你也碰到雷同题目可以停下来看看,如果没碰到,可以跳过本节。
在输入安装 git 命令后,安装失败
yum install git
https://img-blog.csdnimg.cn/img_convert/b3f9e8020bb843c1280fd28606783b14.webp?x-oss-process=image/format,png
如果你也出现雷同题目,可以检察 yum 设置。
vim /etc/yum.repos.d/docker-ce.repo
打开后是这个样子的,发现第四行,enabled=1,其他都是0,将其改为0。
https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg.lenyiin.com%2Fimage%2FLenyiin%2F2024%2F0828025159.webp&pos_id=img-pq2oDuHx-1725051409494%29 如果不熟悉 VIM 操作,可以跟着我操作,如果熟悉操作请跳过

[*]将键盘调至英文输入,以下操作都是英文输入下进行
[*]按 i 键进入输入模式,移动光标至必要修改的地方修改
[*]修改完成后按 ESC 键退出输入模式
[*]按 : 键 (shift + ;),输入 wq 生存退出
完成上述步骤后输入下载指令,应该就能成功下载了
yum --disablerepo=docker install git
https://img-blog.csdnimg.cn/img_convert/5aedd66154a10aa719dac9626e9e2ccf.webp?x-oss-process=image/format,png


3.3、创建 git 用户

为了安全起见,我们通常会为 Git 操作创建一个专用的用户。这个账户只做 Git 私服的操作
https://img-blog.csdnimg.cn/img_convert/5aeee0d5572a1a80f16ab2ba2fa76574.webp?x-oss-process=image/format,png 创建一个名为 git 用户:
adduser git
为 git 用户设置一个密码
passwd git
然后输入你要设置的密码,值得注意的是,为了安全,Linux 体系在输入密码的时间是不回显的。只管将密码复杂度设置的高一些,我这里为了方便演示,将密码设置为 123456 。

3.4、设置 git 账户,部署仓库

3.4.1、切换用户

切换至刚刚创建的 git 用户
su - git
如果你刚刚添加的用户名是别的名字,就把 git 改成你刚刚添加的自定义用户名。
你也可以使用 whoami 指令确认一下是不是已经切换成功,root 用户切换成其他 用户不必要输入密码,其次,可以输入指令 pwd 指令确认一下是不是已经处在 git 家目次中,如果不在 可以输入指令 cd /home/git
进入 git 家目次。
https://img-blog.csdnimg.cn/img_convert/31f72f5ddfde303cb4601ee313afea37.webp?x-oss-process=image/format,png 3.4.2、创建仓库目次

我们可以看一下 GitHub 中 Linux 项目的仓库路径
https://img-blog.csdnimg.cn/img_convert/edfd93f9be0532a94bffee9f4e370dc3.webp?x-oss-process=image/format,png git@github.com:torvalds/linux.git
我们可以看到大厂的命名规范,torvalds 是发布 linux 仓库的主账户名,linux.git 是仓库名称。
例如,我的取名为 Lenyiin ,大家也可以根据自己喜欢命名
mkdir Lenyiin
进入 Lenyiin 目次中
cd Lenyiin
https://img-blog.csdnimg.cn/img_convert/8e4c351f2856f30a1f153f2bfff2ae57.webp?x-oss-process=image/format,png 在这个目次下,大家就可以随意创建自己的仓库了
例如,我创建一个图片仓库,一个博客仓库
mkdir image.git
mkdir blog
.git
https://img-blog.csdnimg.cn/img_convert/4eb1b9328310f5431a7d70cc95dab14d.webp?x-oss-process=image/format,png 3.4.3、初始化仓库

以 blog.git 仓库为例,其他仓库也是同样操作
cd blog
.git
git init
--bare
https://img-blog.csdnimg.cn/img_convert/9c82789af25f1043f96b3708b0a6ddfd.webp?x-oss-process=image/format,png 此时,我们的服务器仓库就成功部署完成,是不是非常简朴!


4、客户端连接远程仓库

解下来我将使用 Linux 和 Windows 分别演示如何连接远端仓库
4.1、Linux 连接远端仓库

在另一台 Linux 呆板上创建你想放置放库的目次,如我就创建一个 blog 文件夹,放置刚刚创建的 blog.git
创建文件,你可以自定义命名
mkdir blog
进入目次中**
cd blog
初始化客户端仓库
git init
https://img-blog.csdnimg.cn/img_convert/e2b6854df0d31ce8c7022a978e370d84.webp?x-oss-process=image/format,png 此时,客户端也设置好了,我们可以任意在仓库里写一点内容来测试一下
在仓库目次下创建 hello.txt 文件,并写入 hello Lenyiin
touch hello.txt
echo "hello Lenyiin" > hello.txt
https://img-blog.csdnimg.cn/img_convert/4fbeb8b1e394d6e7fd9a93709dcbf4d9.webp?x-oss-process=image/format,png 将新修改的内容添加到 git 版本管理中,并添加形貌
git add hello.txt
git commit -m "第一次提交"
https://img-blog.csdnimg.cn/img_convert/c1bfcbffbed095ee61e6a28da3a6c27e.webp?x-oss-process=image/format,png 将本地仓库推送至远端服务器
以我为例,我的远端服务器公网 IP为 “20.2.71.4” ,你在推送的时间请将 IP 地点更换上来
git remote add origin git@20.2.71.4:Lenyiin/blog.git
git push -u origin master
https://img-blog.csdnimg.cn/img_convert/47f83ce1fb41210d7ff50b8978909986.webp?x-oss-process=image/format,png 第一次推送到远端仓库的时间会询问你是否继续,输入 yes ,解下来,他会要求你输入密码,请输入你刚刚创建 git 用户时间设置的密码,密码输入过程无回显,按回车确认。至此,本地仓库推送到远端仓库讲解完毕!

4.2、设置免密登录,设置域名(非必须)

上面已经讲解了使用密码推送本地仓库到远端,在讲解 Windows 推送仓库之前,先讲解一下如何设置免密推送,和域名,这样可以在 Windows 讲解上一并演示。
4.2.1、Linux 客户端创建密匙

ssh-keygen -t rsa
在必要免密的客户端呆板上输入指令,创建密匙的过程中,一起点回车,不消填写任何内容。
https://img-blog.csdnimg.cn/img_convert/837957bccf2bbf698f86ba4a243e21bd.webp?x-oss-process=image/format,png 密匙存放在当前用户的家目次的 .ssh 文件夹下,进入该文件
cd /home/git
/.ssh/
https://img-blog.csdnimg.cn/img_convert/7b8240f320fcdeb606119e4502e26582.webp?x-oss-process=image/format,png 在 .ssh 有两个文件,其中 id_rsa 是私钥,id_rsa.pub 是公钥,将公钥 id_rsa.pub 拷贝到到部署 git 的远端服务器 /home/git/.ssh/ 下。值得注意的是,请千万不要泄露你的私钥,请千万不要泄露你的私钥,请千万不要泄露你的私钥。
4.2.2、Windows 创建密匙

Windows 创建密匙的指令雷同,调出使命管理器,输入指令,一起回车。Windows 的公钥和私钥存放在 C:\Users\用户名\.ssh 下。将 id_rsa.pub 拷贝到远端服务器 /home/git/.ssh/ 下。
https://img-blog.csdnimg.cn/img_convert/e01f88c27af03100312cb362524f25d4.webp?x-oss-process=image/format,png 4.2.3、部署 Git 服务的远端服务器添加公钥

以上都是客户端创建公钥,通过上面的操作,不管是 Linux 用户还是 Windows 用户应该都已经拿到了自己的公钥。
进入 git 家目次下
cd /home/git
检察是否有 .ssh 文件
ls -a -l


如果没有 .ssh 就创建一个
mkdir .ssh
如果有就直接进入
cd .ssh
https://img-blog.csdnimg.cn/img_convert/10ae159b45dfd73eafa167a379dea7e0.webp?x-oss-process=image/format,png 进入 .ssh 文件,检察是否存在 authorized_keys
ls -a -l


如果不存在就创建一个,如果存在就不必要创建
touch authorized_keys
此外,还必要给 authorized_keys 文件设置权限,不然大概会导致无法免密登录
chmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys
紧接着就到了上面客户端创建密匙的公钥,就是拷贝到这个文件夹下,将客户端的公钥追加到 authorized_keys 文件中
at id_rsa.pub >> authorized_keys
如果你有多个客户端想免密登录服务器,一次通过上述方法,将各个客户端的公钥追加到服务器端的 authorized_keys 文件中。
最后可以检察一下是否追加成功
ls -a -l


https://img-blog.csdnimg.cn/img_convert/63ee8f48f399d7c80f7d5e95281e475e.webp?x-oss-process=image/format,png 此时已经成功设置免密登录了。

4.3、域名分析

上面的操作已经可以让你的客户端呆板免密登录到服务器了,如果你手上有域名,或者想买个域名,更方便的使用,可以接着往下看,如果不想使用域名,可以跳过本节,直接看 Windows 连接客户端操作。
进入域名厂商的控制台,如果在阿里云买的就进入阿里云控制台,如果是在腾讯云买的就进入腾讯云的控制台。点击域名分析管理,点击添加记载。
例如我想将我的域名 lenyiin.cn 设置为仓库主域名,记载范例选择 A,主机记载填 @,记载值填你服务器的 IP地点,确认。如果你想设置二级域名分析,可以将主机记载修改成你自定义的二级域名。
https://img-blog.csdnimg.cn/img_convert/11ee500f70b73f49c41efdd7e521d967.webp?x-oss-process=image/format,png 此时,域名分析设置完成。

4.4、Windows 连接远端仓库

信托你在第三节已经完成了 Git 的安装,选择一个你想要存放你的仓库的盘符下,右键鼠标,在出现的菜单栏中点击 “open git bush here” ,输入 clone 指令,即可将远端仓库克隆到本地。
git clone git@lenyiin.cn:Lenyiin/blog.git
https://img-blog.csdnimg.cn/img_convert/3ed315c8d7b720095a52498c478feacb.webp?x-oss-process=image/format,png 没有域名就使用 IP 地点
git clone git@20.2.71.4:Lenyiin/blog.git
我们在 hello.txt 里增加 “windows over!!!” 并在 Windows 上推送到远端服务器
git add .
git commit -m "第二次修改"
git push
https://img-blog.csdnimg.cn/img_convert/f30048a1b09e487bc6d8afc053e4ebd2.webp?x-oss-process=image/format,png 我们登录另一台 Linux 客户端拉取最新仓库
在客户端的仓库目次下,输入指令,拉取远端仓库内容。发现内容成功更新。
git pull
https://img-blog.csdnimg.cn/img_convert/2f1ae4c9f73103b1461a82ad571e2957.webp?x-oss-process=image/format,png 至此,客户端连接服务器部分讲解完毕!


5、迁移仓库

如果云服务器逾期了,我想迁移到另一台特价打折的服务器上呢?

[*]在服务器端,只需在新的呆板上创建 git 用户,并设置密码,将仓库文件内容复制到新服务器家目次里即可。
[*]在客户端,进入仓库根目次,进入 .git 目次下,打开 config 文件,将旧服务器 IP 地点修改至新 IP 地点。对于设置免密的,还必要将公钥追加进新服务器的 authorized_keys 中。
cd /home/git
/blog.git/.git/vim config https://img-blog.csdnimg.cn/img_convert/ef29c81d71016db89fb6ca3bc88c67af.webp?x-oss-process=image/format,png

# 6、搭建 Git 服务器的进阶选项 基本上走完上述流程,你已经完成了基本的 git 的搭建和使用。你还可以进阶一下操作,让你的 git 更完备。这部分内容我只是简朴说一下,具体操作我就不往下贴了。
6.1、使用 Git 自带的 git daemon

Git 内置了一个简易的服务器,称为git daemon,它可以快速启动一个Git服务器供其他人克隆和推送。

6.2、Hooks

Git 提供了一套钩子(hooks)机制,可以在特定变乱发生时触发特定的脚本。例如,你可以设置一个post-receive钩子,在每次吸收到新的代码时自动部署它。
设置示例: 在blog.git/hooks/目次下创建一个post-receive文件,并赋予执行权限:
#!/bin/sh
GIT_WORK_TREE=/path/to/deploy git checkout -f
这将会在每次推送代码后,将代码部署到指定的目次。

6.3、使用 Gitolite 管理权限

Gitolite 是一个 Git 服务器的管理工具,可以帮助你方便地管理多个仓库和用户的访问权限。
安装和设置 Gitolite:
sudo apt-get install gitolite3
sudo -H -u git gl-setup /path/to/your/admin.pub
然后,你可以通过编辑设置文件来管理用户和仓库的权限。

6.4、搭建 Web 界面(如 GitWeb 或 Gitea)

有时间,我们希望可以或许通过 Web 浏览器检察代码仓库。GitWeb 和 Gitea 是两种常见的 Web 界面工具。
安装 Gitea:
wget -O gitea https://dl.gitea.io/gitea/1.14.0/gitea-1.14.0-linux-amd64
chmod +x gitea
./gitea web
Gitea 是一个轻量级的Git服务器自托管办理方案,带有轻便的 Web 界面,类似于 GitHub。

6.5、设置自动备份

为了防止数据丢失,设置自动备份是非常重要的。可以使用 cron 使命定期备份 Git 仓库。
设置备份脚本: 创建一个简朴的备份脚本 backup.sh:
#!/bin/bash
tar -czf /backup/git-backup-$(date +\%F).tar.gz /home/git/
然后将其添加到 cron 使命中:
0 3 * * * /path/to/backup.sh
这将会每天破晓3点自动备份所有 Git 仓库。


7、维护与管理

7.1、服务器的一样平常维护



[*]定期更新:确保操作体系和 Git 软件处于最新版本,以避免安全漏洞。
[*]日志查抄:定期查抄 /var/log 中的日志文件,了解服务器的运行状态。
7.2、日志与监控



[*]访问日志:通过设置SSH日志,可以检察谁何时访问了服务器。
[*]监控工具:如使用Nagios、Prometheus 等工具监控服务器状态和资源消耗。
7.3、升级与备份



[*]升级 Git:定期使用包管理器或源码编译的方式升级 Git。
[*]数据备份:不仅仅备份 Git 仓库本身,还要备份服务器的设置文件等重要数据。


8、总结

搭建一个 Git 私家服务器,虽然必要一些时间和精力,但可以或许提供更高的定制化和安全性。通过本文的指南,你可以从零开始搭建一个属于自己的Git服务器,并根据实际需求进行扩展和管理。无论是小型团队互助,还是企业级的版本控制需求,这样一个自主可控的办理方案都能为你的开辟工作带来巨大的便利。
Git官方文档


提示:如果你只是为了测试一下搭建颠末,用完即删,可以使用删除用户指令
userdel -r git
这条指令会删除用户 git ,同时删除 git 的工作目次,慎用!

更多相关技能贴,见本人个人博客网站 blog.lenyiin.com

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 搭建 Git 私家服务器完整指南