cento7搭建git服务器

2023-11-09 07:20
文章标签 服务器 搭建 git cento7

本文主要是介绍cento7搭建git服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

cento7搭建git服务器

参考文档:https://blog.csdn.net/zhouxiangbai/article/details/78851276###

非常感谢这位老哥的文档

下面搭建的git服务器的简易网络拓扑图如下所示:
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h8Hw38nS-1588928741570)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200508165848084.png)]

1、安装及配置所需软件

【root 用户】

[root@ebs-33384 ~] # yum install git-core openssh-server openssh-client

2、初始化git用户信息

​ (内容随便填写,若省略这步操作,后面的git命令无法完成)

[root@ebs-33384 ~] #git config --global user.name “coffee”

[root@ebs-33384 ~] #git config --global user.email “coffee@gmail.com”

[root@ebs-33384 ~] #git config -l
在这里插入图片描述

3、下载Gitosis。

​ Gitosis是什么?在这不细说,您只需要知道它是Git权限管理系统即可。

[root@ebs-33384 ~] #git clone https://github.com/res0nat0r/gitosis.git

​ 安装python的setuptools

​ centos7 默认是安装ptyhon的但我还是运行了一下

[root@ebs-33384 ~] # yum install python-setuptools

4、安装Gitosis。

[root@ebs-33384 ~] #cd gitosis/
[root@ebs-33384 ~] # python setup.py install

5、在Git服务器上创建git仓库用户

​ [Git服务器,coffee@workpc1]

1. 什么叫git仓库用户?我是这样定义的:一个“用来将管理仓库(gitosis-admin.git)以及所有的git项目仓库存储于它的home空间”的用户。git仓库用户并不一定就是git管理员!!这点必须明白。
  1. 此处再罗嗦几句。这一步要创建的用户,网上绝大部分文档都取名为“git”。这点我一直没弄明白,为什么非得叫“git”,而不能是“张三”、“李四”,是Git的明文规定吗?非也!为了更好的理解本篇文章以及git服务器的工作原理,我创建的这个具有git属性的用户名字叫做“john”。(我相信这对初学者来说,对理清思路是有帮助的。当然,对于深入理解git的人来说叫啥都是一样的)
    [root@ebs-33384 ~]#useradd -m john
    [root@ebs-33384 ~]#passwd john

将john设置为root用户,centos创建的用户默认都不属于root用户组。

(这里你也可以不把john 设置为root用户在,我没有试过)

[root@ebs-33384 ~]#vi /etc/group

在这里插入图片描述

注意,您不要着急敲下面的命令,只看就行,因为这些命令与《搭建git服务器》其实半毛钱关系也没有!我讲这些的目的是为了不让您再被网上的那些资料所困扰(我没有敲下面的命令)
/

~$ sudo mkdir /home/gitrepository
~$ sudo chown john:john /home/gitrepository/
~$ sudo chmod 700 /home/gitrepository/
~$ sudo ln -s /home/gitrepository /home/john/repositories

我在最开始搭建git服务器的时候,也是参考网上的一些资料,按照他们说的步骤一步一步操作。当碰到上面这些操作的时候,我就蒙圈了!我不明白为什么要这么做?既然Gitosis默认状态下会将git仓库放在服务器上git用户主目录(home)下的repositories目录下,那就让它放在那呗,为什么非得搞一个链接,将repositories指向别的目录呢?难道这也是Gitosis明文规定的吗?非也!可惜,网上这些作者根本就不解释为什么这么做。虽然心中一直“不爽”,但是作为小白的我只能按着“圣典”操作。直到现在,终于理解了,上述命令只是那些作者的一些“个人爱好”而已,完全是没必要的!那些作者们您非要改变它的存放位置,那也请给出适当的解释嘛(比如说是为了防止git用户的存储空间不够用了啊什么的)。废话少说,接着讲正题.

6、生成git管理员的公钥

[开发机window10,admin@DESKTOP-A7MHPJQ]

首先你window 要安装git ,打开git

正式任命admin@DESKTOP-A7MHPJQ为git管理员

$ ssh-keygen -t rsa #不需要密码,一路回车就行(在本地操作)

在这里插入图片描述

$ scp ~/.ssh/id_rsa.pub root@服务器的IP地址:/tmp/ #上传ssh public key到Git服务器

注意:要是你服务器ssh默认不是22端口

​ $ scp -P 端口号 ~/.ssh/id_rsa.pub root@服务器的IP地址:/tmp/ #上传ssh public key到Git服务器

输入root 用户密码 就可以了,这个时候公钥已经上传到cento服务/tmp/ 目录里面了

7、初始化Gitosis

[Git服务器,john@workpc1]

目前为止,Git服务器端还一直在root用户下,现切换至john用户(因为在第二步,定义了john为git仓库用户,仓库将都会存放在john的用户空间下)

[root@ebs-33384 ~]#su john

[root@ebs-33384 ~]#cd #转至john的home目录

初始化git用户信息(内容随便填写)

[john@ebs-33384 ~]#git config --global user.name “john”

[john@ebs-33384 ~]#git config --global user.email “john@gmail.com”

8、用git管理员的公钥来对Gitosis进行初始化

上面一步我们已经切换到john用户了,现在我们要把它切换回到到root用户 ;

[root@ebs-33384 ~]# sudo -H -u john gitosis-init < /tmp/id_rsa.pub #用git管理员的公钥来对Gitosis进行初始化

执行之后,/home/john目录下出现一个repositories的目录,目录下存在一个gitosis-admin.git的git库. 其实Gitosis就是通过这个git库来管理所有git库的访问权限的。gitosis-admin的库中存在一个gitosis.conf和一个keydir的目录。其中:

  1. gitosis.conf文件就是权限配置的地方(其语法及用法可以去查看相关帮助),该文件位于~/repositories/gitosis-admin.git/。用vi打开gitosis.conf文件,可看到admin@DESKTOP-A7MHPJQ对giosis-admin.git仓库具有写权限,他即是管理员。

在这里插入图片描述

  1. keydir目录下存放的是所有客户端的公钥,该目录位于~/repositories/gitosis-admin.git/gitosis-export/keydir/,公钥名字必须和配置文件中的member名字对应。

这里我们还需要对其中的一个post-update文件添加可执行的权限。(其实,在我的环境下,该文件的权限已经是755了)

[root@ebs-33384 ~]# chmod 755 ~/repositories/gitosis-admin.git/hooks/post-update

在这里插入图片描述

截止到这,Git服务器架构搭建完毕,仓库是空的(除了自带的gitosis-admin.git仓库),配置文件也是最简单的配置。

接下来,我们来创建git项目,编辑gitosis.conf配置文件为git项目指定可操作的用户和用户所拥有的权限,为用户生成公钥,最后将所有改动上传到Git服务器。

9、配置gitosis-admin

[开发机1,admin@DESKTOP-A7MHPJQ]
目前,git管理员只有一名成员:admin@DESKTOP-A7MHPJQ,只有它有权限配置gitosis-admin。
$ git clone john@workpc1:gitosis-admin.git #获取Gitosis管理项目

我的服务器默认不是22端口: git clone ssh://john@211.x.x.x:44000/gitosis-admin.git

这个时候代码已经clone到本地了

在当前目录下将会产生一个gitosis-admin的目录,里面有配置文件gitosis.conf和一个keydir的目录,keydir目录主要存放git用户名。

在这里插入图片描述

$ vi gitosis-admin/gitosis.conf #编辑gitosis-admin配置文件

在这里插入图片描述

我们指定了project1的members,包含tiger,因此我们还需要将项目成员ztg的公钥上传到Git服务器。

10、 生成客户端项目成员的公钥

[开发机2,ztg@xiaozhang]

​ 开发机2 是我的虚拟机,我直接把生成好的 .ssh文件下载到我们的本地开发机1

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(这里实际就是把开发机2的公钥放到开发1 刚刚从服务器clone来的项目 keydir文件里面并且重新命名为ztg@xiaozhang 这个名字是刚刚在客户机1配置的名字)

客户机1把文件上传到服务器:

$ git add . #记录所有操作

$ git commit -am “xxxxx” #提交到本地仓库

$git push origin master #将本地仓库提交到Git服务器
在这里插入图片描述

11、在客户端创建项目

[开发机2,ztg@ztg]

我们添加了新的git项目的信息,名称为project1,成员有admin@DESKTOP-A7MHPJQ、ztg@xiaozhang。现在来创建真正的git项目,可以在开发机1(admin@DESKTOP-A7MHPJQ),也可以在开发机2(ztg@xiaozhang)来创建这个git项目,我选择在开发机2(ztg@xiaozhang)下创建:

ztg@ztg:~$mkdir ~/project1

ztg@ztg:~ m k d i r / p r o j e c t 1 z t g @ z t g : mkdir ~/project1 ztg@ztg:~ mkdir /project1ztg@ztg: cd ~/project1
ztg@ztg:~/project1 ] g i t i n i t z t g @ z t g : / p r o j e c t 1 ] git init ztg@ztg:~/project1 ]gitinitztg@ztg: /project1] touch a.txt #创建一个空文件,这步省略的话,在git push时,会报错。后面有说明
[tztg@ztg:~/project1KaTeX parse error: Expected 'EOF', got '#' at position 13: ] git add . #̲新增文件 留意后面有一个点 z…] git commit -am “初始化项目project1″

在这里插入图片描述

然后就到把这个项目放到git server服务器上去.

最后返回到客户机1 clone 项目看看能克隆下面不

在这里插入图片描述

这里要是没有权限下载 修改一下文件重新上次到服务器就可以

在这里插入图片描述

这篇关于cento7搭建git服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/374686

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi