ubuntu安装gitolite搭建git服务器

本文讲解在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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容