第七星尘的独立博客

Centos搭建Git服务器和Gitolite权限设置

  • 前言

    很多技术人员都喜欢使用GitHub或者其他服务商托管代码,但有时候我们希望能把代码放在自己服务器上。本文将记录下我在centos下搭建git服务器以及配置的经验,供有需要的人参考。

  • 安装git

    yum install git

  • 创建git用户

    创建一个git用户和用户组,并创建用户文件夹
    sudo useradd -c 'git version manage' -m -d /home/git -s /bin/bash -U git
    修改密码
    passwd git
    根据提示修改密码即可

  • 生成ssh-key

    su git
    ssh-keygen -t rsa -C "git"
    ssh-copy-id git@127.0.0.1

    输入ssh git@127.0.0.1,看能不能免密登录
    ssh git@127.0.0.1

  • 下载并安装gitolite

    git clone git://github.com/sitaramc/gitolite
    mkdir tmp_bin
    ~/gitolite/install -to ~/tmp_bin
    mv ~/.ssh/authorized_keys ~/git.pub
    ~/tmp_bin/gitolite setup -pk ~/git.pub

    成功后会初始化两个版本库 /home/git/repositories/gitolite-admin.git 和 /home/git/repositories/testing.git 测试是否安装成功
    ssh git@127.0.0.1
    输出如下就表示成功:
    hello git, this is git@linux-dev running gitolite3 v3.5.2-4-g62fb317 on git1.8.1.2
    R W gitolite-admin
    R W testing

  • 克隆管理员仓库

    git clone git@127.0.0.1:gitolite-admin.git

  • 添加用户

    在开发机上生成ssh公钥,把其中的pub上传到/home/git/gitolite-admin/keydir目录下,以用户名命名,如“star7th.pub”。至于如何上传,你可以使用Xftp4可视化工具也可以命令行远程传输到服务器的临时目录然后再从临时目录拷贝到目标目录。
    添加完用户后,还需要权限配置。请参考下文。

  • 添加权限以及添加项目

    添加权限以及添加项目都在gitolite-admin/keydir/conf/gitolite.conf配置。
    配置解释,以下面内容为例:
    @admin = git star7th
    @all = git star7th test dev1
    repo gitolite-admin
    RW+ = git
    repo testing
    RW+ = @all
    repo myGit
    RW+ = star7th @admin

    第1,2行定义"admin"用户组和"all"用户组。
    第3行定义一个gitolite-admin的仓库(这是自动创建好的)。第4行表示赋与“git”用户权限。如果是想赋予某个用户组以权限,则参考第7行。
    第9行和第10行是我自行添加的仓库。添加的仓库名为“myGit”,权限赋予给用户“star7th”以及用户组@admin
    当star7th.pub文件添加好,gitolite.conf修改好,需要提交到git仓库才能生效。
    cd /home/git/gitolite-admin
    git add conf/gitolite.conf
    git add keydir/star7th.pub
    git commit
    git push

    当提交后,gitolite会自动添加用户star7th,自动创建空仓库“myGit”。这时候你可以在客户端将“myGit”克隆下来
    git clone git clone git@server:myGit.git ##其中server替换为你的服务器地址
    关于详细的gitolite的原理以及更多配置,可参考:http://www.ossxp.com/doc/git/gitolite.html

  • 补充说明

    提醒下,如果你的本机是windowns,使用tortoiseGit,则注意一下,ssh-key生成的私钥你是不能直接用的。正确做法是使用puttygen.exe工具,在其菜单栏选择Conversions,import,导入key,然后再保存为ppk格式。

 如无特殊说明,本站皆为原创。转载请注明来自第七星尘的独立博客《Centos搭建Git服务器和Gitolite权限设置》

评论

  1. 3213 #1

    😯

    回复
    2017-08-16
  2. 傅小黑 #2

    欢迎使用 gogs 啊哈哈

    回复
    2015-11-29
    • 第七星尘

      搜索了一下gogs好像是好东西呀,找时间装下试试

      回复
      2015-11-30
    • 阿来_Alex

      看了一下还是国人开发的啊,本来觉得上gitlab有点麻烦,团队这么小,现在这个gogs以后可以先试试

      回复
      2016-10-28
      • 第七星尘

        其实我已经从gitlab转到gogs了,只是没写文章。这篇文章是旧的

        回复
        2016-10-28