美文网首页
ubuntu安装gitolite搭建git服务器

ubuntu安装gitolite搭建git服务器

作者: IFELSE | 来源:发表于2017-12-15 17:18 被阅读0次

    本文讲解在ubuntu上安装gitolite,为客户端提供git仓库服务器功能。ubuntu版本:server 16.04
    by kowen

    安装准备

    1. 安装gitolite前,要安装 git,openssh-server和 openssh-client
      sudo apt-get update
      sudo apt-get -y install git openssh-server openssh-client

    2. 准备好你的ssh私钥和公钥
      没有的话可在本地执行ssh-keygen -t rsa -C "yourname@example.com 生成一个,生成后在~/.ssh/目录里,id_rsa是私钥,id_rsa.pub是公钥,文件生成后可以改名。

    3. 上传公钥
      将公钥上传到服务器备用,比如是/tmp/YourName.pub

    添加git用户

    sudo adduser --system --shell /bin/sh --group --disabled-password --home /home/git git

    • 使用命令添加加上--system参数,用户就不会在登陆界面显示
    • home是git用户主目录,也是git仓库的存储目录,如果仓库比较大可以放在别的盘中,比如我的就是/data/git

    安装gitolite

    1. 登录到git用户
      sudo su - git
    2. 确保 ~/.ssh/authorized_keys 文件不存在或者为空
    3. 把公钥拷贝到git主目录下
      cp /tmp/YourName.pub $/Home/YourName.pub
    4. 下载并安装gitolite
    git clone https://github.com/sitaramc/gitolite
    mkdir -p $HOME/bin
    gitolite/install -to $HOME/bin
    
    1. 初始化gitolite, 同时配置管理员
      gitolite setup -pk YourName.pub
      如果以上命令提示找不到,执行下面的代替
      $HOME/bin/gitolite setup -pk YourName.pub

    克隆管理库到本地

    不要直接在服务器上创建和管理仓库,仓库管理是通过叫gitolite-admin的仓库进行的,这个仓库在初始化gitolite时就已经生成了,管理员可以克隆到本地进行配置,在客户端执行

    git clone git@服务器地址/gitolite-admin.git

    如果提示输入密码,编辑客户端的~/.ssh/config文件,添加以下内容:

    Host 服务器地址
        HostName 服务器地址
        User git
        Port 22
        IdentityFile /home/用户名/.ssh/私钥文件名
    

    添加用户和仓库

    gitolite-admin里面两个文件夹keydir和conf:

    1. keydir存储用户的公钥,添加用户可以直接拷贝用户的公钥到此文件夹;
    2. conf目录里的gitolite.conf是配置文件,格式如下:
    repogitolite-admin
        RW+     =   id_rsa
    repo    testing
            RW+     =   @all
    

    比如要添加一个仓库‘foo',并给alice,bob和carol不同的权限,首先把他们的公钥(alice.pub,bob.pub,carol.pub)拷贝到keydir;然后编辑conf/gitolite.conf添加:

    repo foo
        RW+         =   alice
        RW          =   bob
        R           =   carol
    

    最后把修改push到服务器:

    git add conf
    git add keydir
    git commit -m "added foo, gave access to alice, bob, carol"
    git push
    

    服务器会自动添加用户到~/.ssh/authorized_keys,并且添加一个新的空仓库'foo'。

    上述操作完成后,alice、bob和carol就可以将仓库克隆到本地:
    git clone git@服务器地址:foo

    查看对仓库的操作权限,可以在客户端执行
    ssh git@服务器地址 info

    访问规则示例

    gitolite的访问规则功能强大,以下是示例:

    repo foo
        RW+                     =   alice
        -   master              =   bob
        -   refs/tags/v[0-9]    =   bob
        RW                      =   bob
        RW  refs/tags/v[0-9]    =   carol
        R                       =   dave
    

    规则解释:

    • alice对所有branch和tag拥有所有权限--create, push, delete, rewind/overwrite等等
    • bob可以创建或者fast-forward push名字中不以’master‘开头的branch,可以创建不以v+数字开头的tag
    • carol只可以创建v+数字开头的tag
    • dave只有只读权限,可以clone/fetch。

    管理组

    某些时候使用组来管理用户是非常方便的,下面是两个组:

    @staff      =   alice bob carol
    @interns    =   ashok
    repo secret
        RW      =   @staff
    repo foss
        RW+     =   @staff
        RW      =   @interns
    

    组成员可以累加,下面对@staff的定义和上面的效果是一样的:

    @staff      =   alice bob
    @staff      =   carol
    

    组也可以包含其他组:

    @all-devs   =   @staff @interns
    

    @all是一个特殊组名称,既可以指所有的仓库,可以指所有的用户。

    常用命令

    客户端可以通过ssh远程执行一些命令,以下命令可以查看帮助:
    ssh git@host help
    info是最长用到的命令,在命令后跟上'-h'可以查看命令的用法。

    在服务器端有非常丰富的使用命令,运行gitolite help查看详细信息。

    参考资料

    https://github.com/sitaramc/gitolite

    相关文章

      网友评论

          本文标题:ubuntu安装gitolite搭建git服务器

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