在uos下使用gitolite搭建git服务器

在uos下使用gitolite搭建git服务器

  1. 检查基础服务
    检查服务器是否有sshd相关的进程信息,git是否安装,perl环境和perl模块perl-Data-Dumper是否安装。一般服务器上都安装了这些基础的服务。

  2. 创建git用户

# 在root权限下
useradd -m git	#创建新的用户git专门管理git服务器
# 修改git用户密码
passwd git
# 切换用户
su git
  1. 下载gitolite代码并安装gitolite
# 在git的home目录下clone gitolite代码
git clone https://github.com/sitaramc/gitolite

# 安装gitolite
mkdir bin
$HOME/gitolite/install -to $HOME/bin	# 一定要用绝对地址,用相对地址会报错
ls bin
# 显示下列文件就说明成功安装
commands  gitolite  gitolite-shell  lib  syntactic-sugar  triggers  VERSION  VREF
  1. 设置一个管理员用户dvt0551
# 在管理员dvt0551的home目录下,检查是否有公钥
# ~/.ssh/is_rsa.pub是否存在
ssh-keygen -t rsa	# 如果不存在,存在就跳过这一步
# 将管理员dvt0551的ssh公钥copy到git的home目录下
cp ~/.ssh/is_rsa.pub /home/git/dvt0551.pub
# 初始化gitolite,在git目录下并设置dvt0551为管理员
bin/gitolite setup -pk ./dvt0551.pub
# 初始化后创建了repositories和.gitolite目录
# repositories/gitolite-admin.git是管理员配置仓库
# .gitolite/对应gitolite-admin.git的内容
# 所有配置修改必须由管理员提交到gitolite-admin.git
  1. 用dvt0551登陆,然后克隆gitolite管理仓库
# 在dvt0551的home目录下
git clone git@192.168.137.121:gitolite-admin
ls gitolite-admin
conf  keydir
# do some change, add & commit
# 添加用户:将新用户的ssh公钥放置在keydir中,即可添加用户,并在conf/gitolite.conf中配置用户权限。
# 建立仓库:在conf/gitolite.conf中增加repo可以创建新仓库,并添加用户权限
  1. 管理用户权限
    在conf/gitolite.conf中没有设置的repo会提示以下错误
# 假设你之前创建了helloworld版本库,现在使用git clone git@192.168.137.121:helloworld 试图clone  
FATAL: R any helloworld id_rsa DENIED by fallthru  
(or you mis-spelled the reponame)  
fatal: The remote end hung up unexppectedly 
  • 将需要指定权限的用户的ssh公钥文件,存放在gitolite-admin版本库的keydir目录下(如果提交的都是id_rsa.pub,可以将其重命名为该用户的id或者名称,同时也推荐这样重命名,以明示哪个公钥文件是哪个用户的),因为我们初始化时,gitolite已经将该超级管理员的公钥文件自动拷进去了,所以省略此步骤
  • 编辑conf目录下的gitolite.conf文件,添加helloworld版本库管理组,为超级管理员指定读写权限(RW+,具体的权限定义,参考gitolite官方文档)
repo helloworld
	RW+ = dvt0551
  1. 提交到Git仓库
git add conf keydir
git commit -m "add the repo and add RW+ to dvt0551"
git push

这样一个基本的Git服务器就搭建完成了!

  1. 设置权限,让普通用户可以创建自己的版本库
    但是,这样设置以后,用户仍然不能自己创建版本库并提交到Git服务器上。每次有新的版本库创建后,需要管理员手动添加新的repository,然后设置权限,很麻烦。下面就是解决方法
# 管理员dvt0551在~/gitolite-admin/conf/gitolite.conf中添加一下代码
@administrators = dvt0551

repo CREATOR/[a-zA-Z].*
	C = @all	# 设置用户可以在自己的名字空间下(<userid>/),自己创建版本库。
	RW+ = CREATOR	# 设置版本库创建者对版本库具有完全权限。
	RW = WRITERS
	R = READERS @administrators	# 让管理员组administrators的用户有读取权限
	# 至于WRITERS & READERS这两个用户组,是有ssh命令创建,具体可以使用setperms命令来设置。

例如,用户dev1执行git push命令在gitolite服务器上自己的名字空间下创建版本库。

git push git@192.168.137.121:dev1/repo1.git master
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值