博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Centos7下使用gitolite搭建git服务器
阅读量:6269 次
发布时间:2019-06-22

本文共 2877 字,大约阅读时间需要 9 分钟。

Centos7下使用gitolite搭建git服务器

安装较新版本Git

因为安装gitolite需要使用git,所以需要事先安装git。Centos7的git版本默认是1.8,但是现在的git最新版已经是2.x了,还是升级一下比较好。

首先安装git所需的依赖包

# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel # yum install gcc perl-ExtUtils-MakeMaker

下载

# cd /usr/src# wget https://www.kernel.org/pub/software/scm/git/git-2.10.4.tar.gz (可以到https://www.kernel.org/pub/software/scm/git/去找想要下载的版本,我这里下载的是2.10.4) # tar -zxvf git-2.10.4.tar.gz(解压)

安装

# cd git-2.10.4# make prefix=/usr/local/git all# make prefix=/usr/local/git install

在配置环境这里我出现了一个问题,执行下面的命令之后,成功的在bashrc文件看到了追加的内容,但是当git --version时,依旧还是之前的版本号,不太清楚是什么原因导致的。。。

echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc// echo 输出显示一段字符串 // >> 将输出内容追加到目标文件中

寻找解决办法,找到了stackoverflow的一个问答(),找到了解决办法.

# yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm# yum update git

最终git --version版本号显示正确

安装gitolite

安装之前

gitolite搭建的git服务器是以ssh公钥认证为基础的,无论是普通用户还是管理员都需要通过公钥才能访问gitolite服务器。

在安装gitlolite之前,我们需要一个管理员公钥,管理员通过该公钥连接gitolite服务器,克隆gitolite-admin版本库(这个版本库只有管理员才能操作),然后管理员通过该版本库来进行添加新用户、添加授权、添加新仓库等一系列行为。

(1)在管理员所在的客户端上创建ssh公钥

可以使用下面的命令在用户主目录下创建名为~/.ssh/id_rsa.pub的公钥文件和名为~/.ssh/id_rsa的私钥文件

# ssh-keygen

(2)将该公钥文件拷贝到服务器端,以便安装gitolite时备用

可以使用ftp或者邮件的方式将文件传到服务器端,最方便的是scp命令。

# scp [-P port] ~/.ssh/id_rsa.pub user@host:/yourpath// 如果不是默认端口号 加上 -P 指定端口号// scp -P port ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx:/tmp/admin.pub  注意这里更改为你自己的服务器地址// 这里是将该公钥文件放到了远端的/tmp目录下,并命名为admin.pub

从源代码安装

(1)创建gitolite专用账号

# adduser git

执行完上述命令之后,你就会发现在/home目录下多了一个git的目录。你也可以使用passwd git 来给git用户添加密码,但是我这里取消了git用户的口令passwd --delete git,我的目的是只能通过公钥进行认证。

(2)切换到专用账号,后续操作都以该用户身份进行

# su - git# mkdir ~/bin# git clone git://github.com/sitaramc/gitolite.git# ./gitolite/install -ln ~/bin 创建连接# ls ~/bin

执行上面的最后一个命令后:

结果图2

# gitolite setup -pk /tmp/admin.pub // 当然,也可以在root用户时,将该公钥文件拷贝到/home/git目录下,这样的话可以直接使用

结果图2

出现上面出现警告不要怕,这是正常的~

那么恭喜,你已经完成了gitolite的安装

测试连接

切换到你的管理员账户

//我这里是root# su - root# git clone git@xxx.xxx.xxx.xxx:gitolite-admin // 如果不是默认端口22,命令为:git clone ssh://git@xxx.xxx.xxx.xxx:port/gitolite-admin# cd gitolite-admin# ls

结果图3

好了,剩下的就是配置的事喽~

配置gitolite服务器

在客户端克隆的gitolite-admin目录下,默认有两个子目录conf/和keydir/

keydir目录存放用户公钥,初始只有一个管理员admin的公钥(admin.pub),之后新加的用户的公钥文件都会放在这里。

conf/gitolite.conf这里配置用户的权限,包括读写。初始内容为

repo gitolite-admin    RW+ = adminrepo testing    RW+ = @all

意思是:gitolite-admin版本库,只有admin用户可以读写以及强制更新。testing版本库,任何人都可以读写以及强制更新

添加新用户

管理员需要做的就是拿到用户的公钥文件,将文件以username.pub进行重命名,将其放入到gitolite-admin版本库的keydir目录下。

# cp /path/ziv.pub keydir/ //标识用户ziv

然后执行git addgit commitgit push之后,才算是用户添加完成。

更改授权

新用户添加完毕后,需要为新用户添加授权。很简单,修改conf/gitolite.conf文件即可。

管理员进入gitolite-admin版本库,编辑文件。

# vi conf/gitolite.conf

修改为如下的话:

@team1 ziv peter janerepo gitolite-admin    RW+ = adminrepo testing    RW+ = @team1

意思是:testing版本库,只有team1用户组下的用户才能够读写以及强制更新

执行git add git commit git push,添加授权完成。

具体的授权语法,详情请看:

参考资料

【1】

【2】

转载地址:http://cuvpa.baihongyu.com/

你可能感兴趣的文章
a bad dream
查看>>
FD_CLOEXEC用法及原因_转
查看>>
element UI 的学习一,路由跳转
查看>>
RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较
查看>>
Spring JavaBean属性值的注入方式( 属性注入, 特殊字符注入 <![CDATA[ 带有特殊字符的值 ]]> , 构造器注入 )...
查看>>
【Linux】Linux下统计当前文件夹下的文件个数、目录个数
查看>>
Hibernate_14_数据连接池的使用
查看>>
Codeforces Round #271 (Div. 2) D. Flowers (递推 预处理)
查看>>
jacky自问自答-java并发编程
查看>>
Struts2+JSON数据
查看>>
zTree实现单独选中根节点中第一个节点
查看>>
Cocos2D-x设计模式发掘之中的一个:单例模式
查看>>
很强大的HTML+CSS+JS面试题(附带答案)
查看>>
用树莓派实现RGB LED的颜色控制——C语言版本号
查看>>
VC2012编译CEF3-转
查看>>
java 自己定义异常,记录日志简单说明!留着以后真接复制
查看>>
Android 使用AIDL实现进程间的通信
查看>>
机器学习(Machine Learning)&深度学习(Deep Learning)资料
查看>>
jquery的图片轮播 模板类型
查看>>
C# 获取文件名及扩展名
查看>>