
如果你也出现相同问题,可以查看 yum 配置。
vim /etc/yum.repos.d/docker-ce.repo
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
打开后是这个样子的,发现第四行,enabled=1,其他都是0,将其改为0。
如果不熟悉 VIM 操作,可以跟着我操作,如果熟悉操作请跳过
- 将键盘调至英文输入,以下操作都是英文输入下进行
- 按
i
键进入输入模式,移动光标至需要修改的地方修改 - 修改完成后按
ESC
键退出输入模式 - 按
:
键 (shift + ;),输入 wq
保存退出
完成上述步骤后输入下载指令,应该就能成功下载了
yum --disablerepo=docker install git
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

3.3、创建 git 用户
为了安全起见,我们通常会为 Git 操作创建一个专用的用户。这个账户只做 Git 私服的操作
创建一个名为 git
用户:
adduser git
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
为 git
用户设置一个密码
passwd git
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
然后输入你要设置的密码,值得注意的是,为了安全,Linux 系统在输入密码的时候是不回显的。尽量将密码复杂度设置的高一些,我这里为了方便演示,将密码设置为 123456 。
3.4、设置 git 账户,部署仓库
3.4.1、切换用户
切换至刚刚创建的 git
用户
su - git
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
如果你刚刚添加的用户名是别的名字,就把 git
改成你刚刚添加的自定义用户名。
你也可以使用 whoami
指令确认一下是不是已经切换成功,root
用户切换成其他 用户不需要输入密码,其次,可以输入指令 pwd
指令确认一下是不是已经处在 git
家目录中,如果不在 可以输入指令 cd /home/git
进入 git 家目录。
3.4.2、创建仓库目录
我们可以看一下 GitHub
中 Linux
项目的仓库路径
[email protected]:torvalds/linux.git
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
我们可以看到大厂的命名规范,torvalds
是发布 linux
仓库的主账户名,linux.git
是仓库名称。
例如,我的取名为 Lenyiin
,大家也可以根据自己喜好命名
mkdir Lenyiin
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
进入 Lenyiin
目录中
cd Lenyiin
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
在这个目录下,大家就可以随意创建自己的仓库了
例如,我创建一个图片仓库,一个博客仓库
mkdir image.git
mkdir blog.git
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
3.4.3、初始化仓库
以 blog.git
仓库为例,其他仓库也是同样操作
cd blog.git
git init --bare
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
此时,我们的服务器仓库就成功部署完成,是不是非常简单!
4、客户端连接远程仓库
解下来我将使用 Linux 和 Windows 分别演示如何连接远端仓库
4.1、Linux 连接远端仓库
在另一台 Linux
机器上创建你想放置放库的目录,如我就创建一个 blog
文件夹,放置刚刚创建的 blog.git
创建文件,你可以自定义命名
mkdir blog
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
进入目录中**
cd blog
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
初始化客户端仓库
git init
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
此时,客户端也配置好了,我们可以随便在仓库里写一点内容来测试一下
在仓库目录下创建 hello.txt
文件,并写入 hello Lenyiin
touch hello.txt
echo "hello Lenyiin" > hello.txt
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
将新修改的内容添加到 git
版本管理中,并添加描述
git add hello.txt
git commit -m "第一次提交"
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
将本地仓库推送至远端服务器
以我为例,我的远端服务器公网 IP
为 “20.2.71.4”
,你在推送的时候请将 IP
地址替换上来
git remote add origin [email protected]:Lenyiin/blog.git
git push -u origin master
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
第一次推送到远端仓库的时候会询问你是否继续,输入 yes
,解下来,他会要求你输入密码,请输入你刚刚创建 git
用户时候设置的密码,密码输入过程无回显,按回车确认。至此,本地仓库推送到远端仓库讲解完毕!
4.2、设置免密登录,设置域名(非必须)
上面已经讲解了使用密码推送本地仓库到远端,在讲解 Windows
推送仓库之前,先讲解一下如何设置免密推送,和域名,这样可以在 Windows
讲解上一并演示。
4.2.1、Linux 客户端创建密匙
ssh-keygen -t rsa
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
在需要免密的客户端机器上输入指令,创建密匙的过程中,一路点回车,不用填写任何内容。
密匙存放在当前用户的家目录的 .ssh
文件夹下,进入该文件
cd /home/git/.ssh/
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
在 .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/
下。
4.2.3、部署 Git 服务的远端服务器添加公钥
以上都是客户端创建公钥,通过上面的操作,不管是 Linux 用户还是 Windows 用户应该都已经拿到了自己的公钥。
进入 git
家目录下
cd /home/git
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
查看是否有 .ssh
文件
ls -a -l
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
如果没有 .ssh
就创建一个
mkdir .ssh
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
如果有就直接进入
cd .ssh
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
进入 .ssh 文件,查看是否存在 authorized_keys
ls -a -l
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
如果不存在就创建一个,如果存在就不需要创建
touch authorized_keys
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
此外,还需要给 authorized_keys 文件设置权限,不然可能会导致无法免密登录
chmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
紧接着就到了上面客户端创建密匙的公钥,就是拷贝到这个文件夹下,将客户端的公钥追加到 authorized_keys 文件中
at id_rsa.pub >> authorized_keys
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
如果你有多个客户端想免密登录服务器,一次通过上述方法,将各个客户端的公钥追加到服务器端的 authorized_keys 文件中。
最后可以查看一下是否追加成功
ls -a -l
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
此时已经成功设置免密登录了。
4.3、域名解析
上面的操作已经可以让你的客户端机器免密登录到服务器了,如果你手上有域名,或者想买个域名,更方便的使用,可以接着往下看,如果不想使用域名,可以跳过本节,直接看 Windows 连接客户端操作。
进入域名厂商的控制台,如果在阿里云买的就进入阿里云控制台,如果是在腾讯云买的就进入腾讯云的控制台。点击域名解析管理,点击添加记录。
例如我想将我的域名 lenyiin.cn
设置为仓库主域名,记录类型选择 A,主机记录填 @,记录值填你服务器的 IP地址,确认。如果你想设置二级域名解析,可以将主机记录修改成你自定义的二级域名。
此时,域名解析设置完成。
4.4、Windows 连接远端仓库
相信你在第三节已经完成了 Git
的安装,选择一个你想要存放你的仓库的盘符下,右键鼠标,在出现的菜单栏中点击 “open git bush here”
,输入 clone
指令,即可将远端仓库克隆到本地。
git clone [email protected]:Lenyiin/blog.git
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
没有域名就使用 IP 地址
git clone [email protected]:Lenyiin/blog.git
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
我们在 hello.txt
里增加 “windows over!!!”
并在 Windows
上推送到远端服务器
git add .
git commit -m "第二次修改"
git push
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
我们登录另一台 Linux
客户端拉取最新仓库
在客户端的仓库目录下,输入指令,拉取远端仓库内容。发现内容成功更新。
git pull
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
至此,客户端连接服务器部分讲解完毕!
5、迁移仓库
如果云服务器过期了,我想迁移到另一台特价打折的服务器上呢?
- 在服务器端,只需在新的机器上创建
git
用户,并设置密码,将仓库文件内容复制到新服务器家目录里即可。 - 在客户端,进入仓库根目录,进入
.git
目录下,打开 config
文件,将旧服务器 IP
地址修改至新 IP
地址。对于设置免密的,还需要将公钥追加进新服务器的 authorized_keys
中。
cd /home/git/blog.git/.git/
vim config
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
# 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
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
这将会在每次推送代码后,将代码部署到指定的目录。
6.3、使用 Gitolite 管理权限
Gitolite
是一个 Git
服务器的管理工具,可以帮助你方便地管理多个仓库和用户的访问权限。
安装和配置 Gitolite
:
sudo apt-get install gitolite3
sudo -H -u git gl-setup /path/to/your/admin.pub
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
然后,你可以通过编辑配置文件来管理用户和仓库的权限。
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
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
Gitea
是一个轻量级的Git服务器自托管解决方案,带有简洁的 Web
界面,类似于 GitHub
。
6.5、设置自动备份
为了防止数据丢失,设置自动备份是非常重要的。可以使用 cron
任务定期备份 Git
仓库。
配置备份脚本: 创建一个简单的备份脚本 backup.sh
:
#!/bin/bash
tar -czf /backup/git-backup-$(date +\%F).tar.gz /home/git/
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
然后将其添加到 cron
任务中:
0 3 * * * /path/to/backup.sh
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
这将会每天凌晨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
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
这条指令会删除用户 git ,同时删除 git 的工作目录,慎用!
希望这篇博客对您有所帮助,也欢迎您在此基础上进行更多的探索和改进。如果您有任何问题或建议,欢迎在评论区留言,我们可以共同探讨和学习。更多知识分享可以访问我的个人博客网站 https://blog.lenyiin.com/
data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/mmlhbjk/article/details/141731713","extend1":"pc","ab":"new"}">>
评论记录:
回复评论: