采用gitolite架设git服务器

预备工具和原材料

安装 git

sudo apt-get install git-core

配置身份信息

git config --global user.name "yourname"  
git config --global user.email "your@email.com"  

安装 ssh 相关服务

sudo apt-get install openssh-server openssh-client

生成服务器和客户端的公钥和私钥

server : $ ssh-keygen -f ~/.ssh/administrator  // administrator  administrator.pub
clinet : $ ssh-keygen -f ~/.ssh/clinet

服务器端

创建git用户

在服务器端创建专用帐号,所有用户通过此帐号访问git库,一般方便易记,选择git作为专用帐号名称。

$ sudo adduser --system --shell /bin/bash --group git
Adding system user `git' (UID 120) ...
Adding new group `git' (GID 129) ...
Adding new user `git' (UID 120) with group `git' ...
Creating home directory `/home/git' ...

添加git用户到ssh用户组中

$ sudo adduser git ssh
Adding user `git' to group `ssh' ...
Adding user git to group ssh
Done.

为git用户设置口令

当整个git服务配置完成,最好取消git口令,只允许公匙认证。

$ sudo passwd git
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

服务器切换到git用户,并准备安装gitolite

$ su git
$ cd ~    // go home /home/git
从github上下载源码,放到git home目录下并安装
~$ git clone git://github.com/sitaramc/gitolite
~$ mkdir $HOME/bin -p
~$ gitolite/install -to $HOME/bin

添加bin到环境变量

~$ echo 'export PATH=$PATH:/home/git/bin' > ~/.bashrc

设置管理员身份

~$ gitolite setup -pk ~/.keys/administrator.pub 
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
WARNING: /home/git/.ssh missing; creating a new one
    (this is normal on a brand new install)
WARNING: /home/git/.ssh/authorized_keys missing; creating a new one
    (this is normal on a brand new install)

客户端

添加config文件

在.ssh创建并添加配置信息,确保config文件为600权限

~/.ssh$ vi config

host git 
    user git 
    hostname localhost
    port 22
    identityfile ~/.ssh/administrator

下载 git 管理仓库

$ git clone git:gitolite-admin
Cloning into 'gitolite-admin'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
Checking connectivity... done.

#$ git clone git@localhost:gitolite-admin

增加 git 仓库和用户

gitolite-admin/conf/gitolite.conf:这个文件记录了所有的git仓库的状况
gitolite-admin/keydir/: 这个目录下记录了所有用户的pub公钥
因此,要增加用户,把用户的公钥添加到gitolite-admin/keydir/下,要增加仓库或者修改用户对每个仓库的权限,修改gitolite-admin/conf/gitolite.conf 文件,然后把这些修改,先commit到本地仓库,再push到服务器端,便完成修改。

增加用户

拷贝用户公钥到keydir目录

新增用户通过ssh-keygen生成公钥,例如 abner.pub, 传给管理员客户端的gitolite-admin/keydir/目录下,然后通过

$ git add keydir/abner.pub
$ git commit -m "add user abner."
$ git push origin master  //就完成了新用户的添加
查看服务器authorized_keys文件
此时用户的公钥信息会添加到服务器端git用户主目录下的.ssh/authorized_keys文件,查看如下:
~$ vi .ssh/authorized_keys
# gitolite start
command="/home/git/bin/gitolite-shell abner"....
....
command="/home/git/bin/gitolite-shell administrator"....
....
# gitolite end

增加仓库

修改编辑gitolite.conf

修改gitolite-admin/conf/gitolite.conf,增加仓库及用户权限:

$ vi conf/gitolite.conf
@android = abner jack

repo gitolite-admin
    RW+     =   administrator

repo testing
    RW+     =   @all

repo helloworld
    RW+     =   @android
经过 add,commit,push 后就仓库的建立和权限的管理
$ git add .
$ git commit -m "add repo helloworld."
....
remote: Initialized empty Git repository in /home/git/repositories/helloworld.git/  //新建仓库
To git:gitolite-admin
   b908f6c..bb4f641  master -> master

测试

配置用户 ssh git

$ vi /home/jack/.ssh/config

host git
    user git
    hostname localhost
    port 22
    identityfile ~/.ssh/jack

克隆git仓库

$ git clone git:helloworld
$ git config --global user.email "jack@example.com"
$ git config --global user.name "jack"
$ echo "hello world!" > README
$ git commit -m "add README."
$ git push origin master
$ git log

commit 165dcc404c81dd76ef086e2ef3453ef43af35992
Author: jack <jack@example.com>
Date:   Wed Aug 10 20:44:05 2016 +0800

    add README.

在服务器端查看

~/repositories/helloworld.git$ git log
commit 165dcc404c81dd76ef086e2ef3453ef43af35992
Author: jack <jack@example.com>
Date:   Wed Aug 10 20:44:05 2016 +0800

    add README.

参考

https://github.com/sitaramc/gitolite
http://blog.csdn.net/xsl1990/article/details/25486211

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值