手把手来搭建Git私服!

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

[[438118]]

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

  • 搭建git私服
  • 文件存储服务
  • 网站
  • 学linux

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

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

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

前期准备

为什么要搭建 Git 私服

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

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

  • GitHub、Gitee 私有仓库都是限流的,文件一旦多了,或者有图片文件,git pull 的时候半天拉不下来
  • 自己的文档难免有自己个人信息,放在 GitHub 心里也是担心的
  • 私有仓库可以N多个人合作使用,不受限制(这个一般同学用不上)

网上可以搜到很多 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[=<path>]] [--html-path] [--man-path] [--info-path] 
  4.            [-p|--paginate|--no-pager] [--no-replace-objects] [--bare] 
  5.            [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] 
  6.            <command> [<args>] 
  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。

  • 如果是 Windows 系统公钥私钥的目录在 C:\Users\用户名.ssh 下。
  • 如果是 Mac 或者 Linux, 公钥和私钥的目录这里 cd ~/.ssh/, 如果发现自己的电脑上没有公钥私钥,那就自己创建一个。

创建密钥的命令:

  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 私服搭建的全过程,涉及到的安全问题我也给大家列举了出来。

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

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

 

责任编辑:姜华 来源: 代码随想录
相关推荐

2011-03-25 12:45:49

Oracle SOA

2009-12-11 09:04:10

Windows搭建Li

2022-03-14 14:47:21

HarmonyOS操作系统鸿蒙

2010-07-06 09:43:57

搭建私有云

2010-07-06 09:38:51

搭建私有云

2022-01-04 08:52:14

博客网站Linux 系统开源

2023-12-21 09:10:13

2020-10-15 06:32:46

Git 变基GIT

2011-01-10 14:41:26

2011-05-03 15:59:00

黑盒打印机

2020-09-23 07:00:00

Selenium We架构

2020-11-03 14:10:29

Vue服务端渲染前端

2011-04-26 14:07:24

2010-01-20 10:44:01

linux DHCP服务器

2018-10-10 15:14:20

Linux虚拟机配置

2019-08-26 09:25:23

RedisJavaLinux

2010-10-29 14:04:49

2020-06-17 07:35:57

虚拟机部署微服务

2021-02-26 11:54:38

MyBatis 插件接口

2011-02-22 13:46:27

微软SQL.NET
点赞
收藏

51CTO技术栈公众号