搭建基于Gitosis权限管理的GIT服务器

2024-08-22 05:52

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

现在越来越多的开源项目使用git来进行管理,而git是分布式的,没有严格的界限来区分客户端和服务器,而我们习惯上都需要有一台服务器来控制的,故而接下来的实验中会使用一台机器来作为服务器角色并在上面安装上Gitosis的权限管理系统(当然也可以使用Gitolite),此次我们的实验环境是VMware上面安装了Ubuntu的虚拟机1台(同时充当服务器和客户端),下面是整个实验过程的记录:

1.安装上git工具(服务器和客户端都须安装):

    sudo apt-get install git-core

2.安装Gitosis(仅服务器上需要安装):

    sudo apt-get install python-setuptools
    mkdir ~/src
    cd ~/src
    git clone https://github.com/res0nat0r/gitosis.git
    cd gitosis/
    sudo python setup.py install

3.创建一个git帐号(仅服务器上):

    sudo adduser --system --shell /bin/sh --gecos 'git version control' --group --disabled-password --home /home/git git

4.生成SSH密钥对(仅客户端上):

    ssh-keygen

    命令执行过程中全部按“回车”键默认配置,最终会在~/.ssh目录下生成id_rsa和id_rsa.pub一对密钥。接下来将生成的id_rsa.pub公钥复制到服务器上(一般使用scp命令,由于我们在同一台机器,故该步省略)

5.将公钥导入初始化gitosis(在服务器上)

    sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub

    运行该命令后有如下提示(上述公钥对应的用户用于默认情况下的gitosis库管理员):

Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

此时我们的公钥将会被导入到/home/git/repositories/gitosis-admin.git/gitosis-export/keydir目录下,名称为xinu@x-slam.pub,该名字可随意更改,只要与配置文件/home/git/repositories/gitosis-admin.git/gitosis.conf里内容一致即可,配置文件默认内容如下:

[gitosis]

[group gitosis-admin]
members = xinu@x-slam
writable = gitosis-admin

    从上面内容可看出,我们可以分组管理来配置权限。

6.修改gitosis权限

    sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

    主要作用是当更新gitosis-admin库时要更新服务器上的gitosis-export目录需要有权限。

7.管理项目与用户

    对于刚才安装好的gitosis权限管理服务,我们不能在服务器上直接修改相关配置,于是我们会在客户端先将该管理工程克隆下来:

git clone git@127.0.0.1:gitosis-admin.git

    其中,git@127.0.0.1中git为用户名,而127.0.0.1是服务器IP,gitosis.git是项目名,运行上面命令会有如下提示:

ssh: connect to host 127.0.0.1 port 22: Connection refused
fatal: The remote end hung up unexpectedly

    是由于服务器端没有安装SSH服务导致,于是执行如下命令进行安装:

    sudo apt-get install openssh-server

    接下来再在客户端重新执行克隆操作命令,会在当前目录下生成gitosis-admin目录,该目录下有gitosis.conf配置文件和keydir目录,以后我们通过将新用户的公钥放至keydir目录,并个性gitosis.conf文件,再将其通过git add、git commit和git push命令更新服务器上的相应文件即可添加新服户了。

     那么要如何创建自己的项目并上传到服务器上呢?首先先要修改下权限:

     修改上面克隆下来的gitosis-admin目录下的gitosis.conf文件,将writable = gitosis-admin修改为writable = gitosis-admin ourProject,然后保存后再执行如下命令:

     git commit -m "Add ourProject permission"
     git push

     下面是相应的步骤(均在客户端下操作):

     1).创建目录ourProject:

           mkdir ourProject

     2).进入创建的目录并创建一文件:

           cd ourProject
           echo "test" > xinu

    3).创建git本地库:

          git init

    4).将xinu文件添加到本地库中:

          git add xinu

    5).将添加的文件提交到本地库中:

          git commit -m "Add new project and file 'xinu'"

    6).创建远程库

          git remote add origin git@127.0.0.1:ourProject.git

    7).将本地库上传到远程库

          git push origin master

    成功上传后,在服务器的/home/git/repositories目录下会多出ourProject.git目录,这就是我们刚创建的工程了。至此,使用Gitosis来搭建可权限管理的Git服务器就体验了一次,后面再找个时间好好学习下gitosis.conf配置文件的规则和使用repo来创建库的过程了。

这篇关于搭建基于Gitosis权限管理的GIT服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、