美文网首页
Centos7下使用gitolite搭建git服务器

Centos7下使用gitolite搭建git服务器

作者: luckyzv | 来源:发表于2018-05-25 11:34 被阅读0次

    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的一个问答(https://stackoverflow.com/questions/21820715/how-to-install-latest-version-of-git-on-centos-7-x-6-x),找到了解决办法.

    # 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+ = admin
    repo 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 jane
    
    repo gitolite-admin
        RW+ = admin
    repo testing
        RW+ = @team1
    

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

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

    具体的授权语法,详情请看:http://www.worldhello.net/gotgit/05-git-server/040-gitolite.html#id10

    参考资料

    【1】https://www.unixmen.com/install-gitolite-centos-7/
    【2】http://www.worldhello.net/gotgit/05-git-server/040-gitolite.html#gitolite

    相关文章

      网友评论

          本文标题:Centos7下使用gitolite搭建git服务器

          本文链接:https://www.haomeiwen.com/subject/aimyjftx.html