centos6中gitolite安装配置步骤详解

作者:袖梨 2022-06-30


git服务端的管理工具用过2个,一个gitlab,一个是gitolite,

1,gitlab功能强大,有web管理界面,反正是各种方便吧,请参考:linux gitlab nginx 安装 配置 详解,但是gitlab安装比较麻烦

2,gitolite,安装非常简单,功能也比较简单,基本需要能满足,创建仓库,分配权限,总体来说还不错。
如果频繁的创建仓库,以及人员变更,用gitlab比较合适的,反之gitolite比较合适。

一,安装GIT

# yum install perl openssh git 

在这里要注意,所有以#开头执行的命令都root账号,以$开头的命令都非管理账号
二,安装gitolite
1,创建git用户
# adduser git 
# passwd git 
2,切换到git用户,创建安装目录
 
# su – git 
$ cd ~ 
$ mkdir bin 
3,克隆gitolite源码
 
$ git clone https://github.com/sitaramc/gitolite.git 
4,生成管理员的公钥和私钥,用root为管理员
 
$ exit     //退出切换到root,直接su root要密码 
# ssh-keygen   //生成公钥和私钥 
# cp /root/.ssh/id_rsa.pub /tmp/admin.pub 
5,安装gitolite
# su – git 
$ /home/git/bin/gitolite setup -pk /tmp/admin.pub 
6,管理员下载管理库
 
$ exit     //退出切换到root,直接su root要密码 
# git clone [email protected].*.*:gitolite-admin.git
 
三,添加测试账户

# adduser tank 
# passwd tank 
# su - tank 
$ ssh-keygen 
生成该用户的公钥和私钥,我们也可以用tortoisegit中的PuttyGen,来生成公钥和私钥,
linux下用ssh-keygen生成的私钥与PuttyGen生成的私钥是不能通用的,如果想通用就要转换一下
linux 私钥 另存为windows下的ppk
linux 私钥 另存为windows下的ppk

四,添加仓库,并配置权限

1,将公钥加到管理库

# cp /home/tank/.ssh/tank.pub /root/gitolite-admin/keydir/ 

2,修改配置文件,并赋予权限
 
# vim /root/gitolite-admin/conf/gitolite.conf 
 
@test=zhangying tank test        //定义个组,多个人员,空格隔开。组最好都放到顶部,集中好管理 
 
repo gitolite-admin 
    RW+     =   admin 
 
repo testing 
    RW+     =   @all 
 
repo blog             //定义的仓库名,也就是[email protected].*.*:blog.git 
    RW+ =   @test     //读写 
 
repo test 
    R =   @test       //只读 

3,将用户信息加到管理库
 
# /root/gitolite-admin 
# git add * 
# git commit -m "add tank" 
# git push 

这样服务器端就搭建好了,不管是linux下切换到tank用户进行clone等,还是在windows下用tortoisegit来clone等,都是可以的。

 

使用 gitolite 管理 git 服务器


gitolite:2.2-1


服务器端和客户端都是ubuntu linux


由于gitosis不再更新,打算迁移到gitolite。由于项目的用户不多,这里就不做详细的迁移,仅安装好gitolite后重新配置允许访问的用户,原版本库甚至不用移动,但是gitolite-admin库建议重新克隆并推送一次,以免管理出错。


通过apt安装,gitolite使用SSH key来认证用户,但用户不需要在主机上添加用户,而是使用服务器上的一个受限用户git。 安装的过程需要在客户端和服务器之间切换,留意操作步骤之前的说明。
服务器端(ip:192.168.1.254)


1.安装git


sudo apt-get install git-core


2.安装gitolite


sudo apt-get install gitolite


这里使用软件源中的2.2-1,最新的在 https://github.com/sitaramc/gitolite 上。


3.创建git用户


sudo adduser --system --shell /bin/sh --gecos 'git user' --group --disabled-password --home /home/git git
如果原来gitosis就有创建的,这里可以不用。


4.检查以上是否正常 ^_^


客户端(也需要先安装 git)


5. 在 gitolite 管理员的机器上生成 密钥,把公钥重命名为comet.pub,这里用scp传到服务器上


ssh-keygen -t rsa
mv id_rsa.pub comet.pub
scp comet.pub [email protected]:comet.pub
注意:这里的公钥文件comet.pub只有一行内容,如果是在windows中用puttygen生成的会有多行,在后面初始化的时候会提示:
WARNING: a pubkey file can only have one line (key); ignoring comet.pub
         Perhaps you're using a key in a different format (like putty/plink)?
         If so, please convert it to openssh format using 'ssh-keygen -i'.
         If you want to add multiple public keys for a single user, use
         "[email protected]" file names.  See the "one user, many keys"
         section in doc/3-faq-tips-etc.mkd for details.
6.在 ~/.ssh/config 添加以下内容,以便连接到服务器
Host 192.168.1.254
Compression yes
IdentityFile ~/.ssh/id_rsa


服务器端


7.使用上面的 comet.pub 初始化 gitolite
先切换到git用户,再进行
su - git
gl-setup /home/comet/comet.pub
creating gitolite-admin...
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
creating testing...
Initialized empty Git repository in /home/git/repositories/testing.git/
[master (root-commit) 0aa63a9] start
 2 files changed, 6 insertions(+)
 create mode 100644 conf/gitolite.conf
 create mode 100644 keydir/comet.pub
初始化是根据/usr/share/gitolite/conf/example.conf 和 example.gitolite.rc 在/home/git下生成 .gitolite.rc,.gitolite,projects.list,repositories ,生成 gitolite-admin 和 testing 两个版本库,并在.ssh/authorized_keys中加入comet.pub文件。


客户端


8.获取服务器上的 gitolite-admin 项目,会有keydir和conf两个文件夹
git clone [email protected]:gitolite-admin
由于前面已经把comet用户的公钥加入git用户.ssh/authorized_keys中,这里是不需要git密码的。
注意:这里的gitolite-admin是git用户根目录中的repositories/gitolite-admin,不能用绝对路径,如:/srv这样的,但可以做软链接过去。
9.添加新组jichuteam、用户jichu、项目jichu,并推送到远程服务器
注:如果客户端是windows,使用Puttygen生成公钥和私钥:参数为SSH-2 RSA,1024位,按需加上密码。
如果之前是使用ssh-keygen生成的,在这里直接Load private key,然后save private key,保存为ppk格式才能用。
复制puttygen显示的公钥保存为*.pub文件,注意不是"save public key",保证公钥文件只有1行内容,否则不正确。把公钥给git的管理员,让他用gitolite-admin的方法把公钥加入git服务器,并设置好对应项目的权限。
在新的客户端生成密钥,并把公钥放到 gitolite-adminkeydir ,这里是Admin.pub
cd gitolite-admin/conf
vi gitolite.conf
修改为下面内容,其中repo是对应的项目版本库,RW+表示可读写,Admin是 Admin.pub 的文件名,表示用户,多个用户用空格隔开。
repo    gitolite-admin
        RW+     =   comet
repo    testing
        RW+     =   @all
repojichu
RW+=comet Admin
git push


10.到其他地方建立项目根目录,并设置默认用户和邮箱,在.git/config添加master主分支和远程服务器URL


mkdir jichu
cd jichu
git init
git config user.name Comet
git config user.email [email protected]
git remote add master [email protected]:jichu.git


11.在 jichu 目录下进行开发,这里新建了 log.txt(一定要有新文件),提交到index,加上"initial import"信息并提交到本地仓库,最后是推送到远程服务器。
echo "begin develop" > log.txt
git add .
git commit -a -m "initial import"
git push master master


服务器端


12.在服务器的 /home/git/repositories/ 可以看到有 jichu.git 的版本库。

相关文章

精彩推荐