文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

手把手来搭建Git私服!

2024-12-02 15:00

关注

之前在 服务器都有啥用处 讲了服务器都有什么用。

这次卡哥就先带大家部署一个Git 私服。

其实我在两年期就写了这篇文章,当时发布在Gitchat上,现在重新润色再分享出来。

注意这个部署过程需要点linux基础,如果一点linux基础都没有,命令行也没敲过,建议先学学Linux在看本文哈。

前期准备

为什么要搭建 Git 私服

很多同学都问,文章、文档、资料怎么备份啊,自己电脑和公司(或者实验室)电脑怎么随时同步资料啊等等,这里我写一个搭建自己的 Git 私服的详细教程。

为什么要搭建一个 Git 私服呢,而不是用 GitHub、Gitee 免费的私有仓库,有以下几点:

网上可以搜到很多 Git 搭建,但是说的模棱两可,而且有的直接是在本地搭建 Git 服务,既然是备份,搭建在本地哪还有备份的意义,一定要有一个远端服务器呀。

如何找到可以外网访问服务器

有的同学问了,自己的电脑就不能作为服务器么?

这里要说一下,安装家庭带宽,运营商默认是不会给我们独立分配公网 IP 的。一般情况下是一片区域公用一个公网 IP 池,所以外网是不能访问到在家里我们使用的电脑的。

除非我们自己去做映射,这其实非常麻烦,而且公网 IP 池是不断变化的。辛辛苦苦做了映射,运营商给 IP 一换,我们的努力就白扯了。

那我们如何才能找到一个外网可以访问的服务器呢,此时云计算拯救了我们。推荐大家选一家云厂商(阿里云、腾讯云、百度云都可以)在上面上买一台云服务器。

如果大家不知道怎么买,可以在公众号:代码随想录,后台回复:服务器,我会给你购买的详细教程。

云厂商经常做活动,如果从来没有买过云服务器的新用户更便宜,强烈推荐一起买个三年,因为续费非常贵。

买云服务器的时候推荐直接安装 CentOS 系统。(我们接下来要搭建git私服)

有自己云服务器和一个公网 IP 真的是一件非常非常幸福的事情,能体验到自己的服务随时可以部署上去提供给所有人使用的喜悦。

外网可以访问的服务器解决了,接下来就要部署 Git 服务了。

本文将采用 CentOS 系统来部署 Git 私服。

开始搭建

登录服务器

上次组织的免费领阿里云服务器活动中,很多同学可能卖完,都不知道这个服务器要怎么登录。甚至找不到自己的服务器在哪里。

我特意也去买一个阿里云服务器来给大家做一个示范(卡哥就是这么负责 哈哈)

登录阿里云账户,控制后台,可以找到自己的服务器:

点进去这里,就可以看到服务器信息:

找到自己的公网IP,就用用来登录了。

第一次登录,记得重置一下root密码在上图中已经说明。

然后本地安装一个终端登录软件,我是Mac,用的是iterm2,如果windows系统的话,可以用xshell。

在命令行执行:

  1. ssh root@120.77.8.66  

输入密码就可以登录了

就是这样:

服务器端安装 Git

如果自己登录的不是root用户,先切换至 root 账户:

  1. su root 

看一下服务器有没有安装 Git,如果出现下面信息就说明是有 Git 的:

  1. [root@instance-5fcyjde7 ~]# git 
  2. usage: git [--version] [--help] [-c name=value] 
  3.            [--exec-path[=]] [--html-path] [--man-path] [--info-path] 
  4.            [-p|--paginate|--no-pager] [--no-replace-objects] [--bare] 
  5.            [--git-dir=] [--work-tree=] [--namespace=] 
  6.             [
  7. ············· 

如果没有 Git,就安装一下,yum 安装的版本默认是 1.8.3.1:

  1. yum install git 

安装成功之后,看一下自己安装的版本:

  1. git --version 

服务器端设置 Git 账户

创建一个 Git 的 Linux 账户,这个账户只做 Git 私服的操作,也是为了安全起见。

如果不新创建一个 Linux 账户,在自己的常用的 Linux 账户下创建的话,哪天手抖 来一个 rm -rf * 操作,数据可全没了。

这里 Linux Git 账户的密码设置的尽量复杂一些,我这里为了演示,就设置成为 'gitpassword'。

  1. adduser git 
  2. passwd gitpassword 

然后就要切换成 Git 账户,进行后面的操作了:

  1. [root@instance-5fcyjde7 ~]# su - git 

看一下自己所在的目录,是不是在 git 目录下面:

  1. [git@instance-5fcyjde7 ~]$ pwd 
  2. /home/git 

服务器端密钥管理

创建 .ssh 目录,如果 .ssh 已经存在了,可以忽略这一项。

为啥用配置 SSH 公钥呢,录友们记不记得我急使用 GitHub 上传上传代码的时候也要把自己的公钥配置上 GitHub 上。

这也是方面每次操作 Git 仓库的时候不用再去输入密码。

  1. cd ~/ 
  2. mkdir .ssh 

进入 .ssh 文件下,创建一个 authorized_keys 文件,这个文件就是后面就是要放我们客户端的公钥。

  1. cd ~/.ssh 
  2. touch authorized_keys 

别忘了 authorized_keys 给设置权限,很多同学发现自己不能免密登录,都是因为忘记了给 authorized_keys 设置权限:

  1. chmod 700 /home/git/.ssh 
  2. chmod 600 /home/git/.ssh/authorized_keys 

接下来我们要把客户端的公钥放在 Git 服务器上,我们在回到客户端,创建一个公钥。

在我们自己的电脑上,有公钥和私钥。两个文件分别是:id_rsa 和 id_rsa.pub。

创建密钥的命令:

  1. ssh-keygen -t rsa 

创建密钥的过程中,一路点击回车就可以了。不需要填任何东西。把公钥拷贝到 Git 服务器上,将我们刚刚生成的 id_rsa.pub,拷贝到 Git 服务器的 /home/git/.ssh/ 目录。

在 Git 服务器上,将公钥添加到 authorized_keys 文件中:

  1. cd /home/git/.ssh/ 
  2. cat id_rsa.pub >> authorized_keys 

如何看我们配置的密钥是否成功呢, 在客户点直接登录 Git 服务器,看看是否是免密登录:

  1. ssh git@git 服务器 ip 

例如:

  1. ssh git@127.0.0.1 

如果可以免密登录,那就说明服务器端密钥配置成功了。

服务器端部署 Git 仓库

我们在登录到 Git 服务器端,切换为 Git 账户。如果是 root 账户切换成 Git 账户:

  1. su - git 

如果是其他账户切换为 Git 账户:

  1. sudo su - git 

进入 git 目录下:

  1. cd ~/git 

创建我们的第一个 Git 私服的仓库,我们叫它为 world 仓库。那么首先创建一个文件夹名为 world.git,然后进入这个目录。

有同学问,为什么文件夹名字后面要放 .git, 其实不这样命名也是可以的。但是细心的小伙伴可能注意到,我们平时在 GitHub 上 git clone 其他人的仓库的时候,仓库名字后面,都是加上 .git 的。

例如下面这个例子,其实就是 GitHub 对仓库名称的一个命名规则,所以我们也遵守 GitHub 的命名规则。

  1. git clone https://github.com/youngyangyang04/leetcode-master.git 

所以我们的操作是:

  1. [git@localhost git]# mkdir world.git 
  2. [git@localhost git]# cd world.git 

初始化我们的 world 仓库:

  1. git init --bare 

如果我们想创建多个仓库,就在这里创建多个文件夹并初始化就可以了,和 world 仓库的操作过程是一样一样的。

现在我们服务端的 Git 仓库就部署完了,接下来就看看客户端,如何使用这个仓库呢。

客户端连接远程仓库

我们在自己的电脑上创建一个文件夹也叫做 world 吧。

其实这里命名是随意的,但是我们为了和 Git 服务端的仓库名称保持同步。这样更直观我们操作的是哪一个仓库。

  1. mkdir world 
  2. cd world 

进入 world 文件,并初始化操作:

  1. cd world 
  2. git init 

在 world 目录上创建一个测试文件,并且将其添加到 Git 版本管理中:

  1. touch test 
  2. git add test 
  3. git commit -m "add test file" 

将次仓库和远端仓库同步:

  1. git remote add origin git@git 服务器端的 ip:world.git 
  2. git push -u origin master 

此时这个 test 测试文件就已经提交到我们的 Git 远端私服上了。

Git 私服安全问题

这里有两点安全问题。

Linux Git 的密码不要泄露出去

否则,别人可以通过 ssh git@git 服务器 IP 来登录到你的 Git 私服服务器上。当然了,这里同学们如果买的是云厂商的云服务器,如果有人恶意想通过尝试不同密码链接的方式来链接你的服务器,重试三次以上,这个客户端的 IP 就会被封掉,同时邮件通知我们可以 IP 来自哪里。

所以大可放心,密码只要我们不泄露出去,基本上不会有人同时不断尝试密码的方式来登上我们的 Git 私服服务器。

私钥文件 id_rsa 不要给别人

如果有人得到了这个私钥,就可以免密码登录我们的 Git 私服上了,我相信大家也不至于把自己的私钥主动给别人吧。

总结

这里就是整个 Git 私服搭建的全过程,涉及到的安全问题我也给大家列举了出来。

我自己是一共搭建了三个私有仓库,一个放平时笔记,文章,杂七杂八,一个放刷题笔记,一个放工作资料。

用来备份,和 两个电脑文件夹同步,真的很方便,大家可以用起来。

 

来源:代码随想录内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯