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

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

Windows Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my