CentOS系统利用Gitolite搭建私有Git服务器

1 篇文章 0 订阅

说明:

  1. 服务器和管理器使用同一台机器,主机名为hadoop,现实场景最好使用不同的机器。
  2. 创建不同的用户模拟使用场景:
    1)git用户作为服务器管理用户,用来安装gitolite;
    2)gitadmin用户作为版本库管理用户,使用gitolite管理版本库;
    3)tom和jerry用户作为普通用户,使用版本库管理员创建的版本库。
  3. 整个搭建过程中会使用不同的机器,要注意区分,不同机器指代:
    1)服务器指的是git用户工作环境;
    2)管理器指的是gitadmin用户工作环境;
    3)客户机指的是普通用户工作环境。

1. 安装部署

1.1 管理器上安装Git

在管理器上安装Git并配置Git账户信息:

[root@hadoop ~]# yum install git –y
[gitadmin@hadoop ~]$ git config --global user.name "gitadmin"
[gitadmin@hadoop ~]$ git config --global user.email "gitamdin@aliyun.com"

1.2 管理器上配置SSH

  1. 创建SSH公钥/私钥对
[gitadmin@hadoop ~]$ mkdir .ssh #如果没有.ssh文件夹则创建
[gitadmin@hadoop ~]$ ssh-keygen -f ~/.ssh/gitadmin
  1. 配置config文件
    为了避免和其他公钥私钥混淆,先配置下SSH客户端的文件 ~/.ssh/config,可以通过创建主机别名,使在连接主机时使用特定的公钥。
    创建 ~/.ssh/config文件,插入以下内容:
host hadoop
user git
hostname 192.168.92.2
port 22
identityfile ~/.ssh/gitadmin

其中:

  • host 后是服务器的主机名
  • user 后是服务器系统的用户名
  • hostname 后是服务器ip地址
  • port 后是服务器sshd服务的端口号,服务器的sshd端口是必须是22端口,否则在配置免秘钥进行git提交代码时,会提交失败的
  • identityfile 后是管理器用户的公钥

创建config文件后,需要修改文件权限,config文件权限必须是600,否则在后续添加公钥时会提示权限不允许错误:

[gitadmin@hadoop ~]$ chmod 600 ~/.ssh/config 

1.3 将管理器上SSH公钥拷贝到服务器上

在管理器上使用scp命令将gitadmin.pub拷贝到服务器上:

[gitadmin@hadoop ~]$ scp ~/.ssh/gitadmin.pub hadoop:/home/git/tmp/

1.4 在服务器上安装gitolite

  1. 安装git,和在管理器上的安装一样,可以不用配置账户信息
  2. 在git的用户目录下下载gitolite软件包:
[git@hadoop ~]$ git clone https://github.com/sitaramc/gitolite
  1. 安装gitolite
[git@hadoop ~]$ mkdir bin #该文件夹必须存在
[git@hadoop ~]$ gitolite/install -to $HOME/bin

安装后,bin目录下会有以下内容,其中gitolite为可执行文件:

[git@hadoop bin]$ ls
commands  gitolite  gitolite-shell  lib  syntactic-sugar  triggers  VERSION  VREF
  1. 利用管理器的ssh公钥生成管理版本库
[git@hadoop bin]$ gitolite setup -pk ~/tmp/gitadmin.pub

执行成功后,会在用户主目录下生成projects.list文件和repositories文件夹,其中:

  • repositories:版本库文件夹,所有版本库均存放在该文件夹下,目前包括两个版本库gitolite-admin.git和testing.git
  • projects.list:版本库列表,不包括git管理库gitolite-admin.git,目前只有testing.git

1.5 在管理器上克隆并管理git管理库gitolite-admin.git

  1. 克隆管理库
    可以在用户主目录下创建一个专门存放git项目的文件夹,然后将项目克隆到该文件夹下:
[gitadmin@hadoop gitolite1]$ git clone hadoop:gitolite-admin
#经测试使用git clone hadoop:gitolite-admin.git也是可以的
#经测试使用git clone hadoop:/home/git/repositories/gitolite-admin不可以
#经测试使用git clone hadoop:/home/git/repositories/gitolite-admin.git不可以

克隆完成后,在gitolite-admin文件夹下包括两个文件夹:-conf文件夹包含gitolite.conf文件,该文件是版本库权限配置文件;keydir文件夹保存全部用户的ssh公钥。

  1. 管理版本库
  • 在客户机上使用scp命令将用户的ssh公钥拷贝到管理器上
  • 在管理器上将用户公钥拷贝到gitolite-admin/keydir文件夹下
[gitadmin@hadoop ~]$ cp tmp/tom.pub gitworkspace/gitolite1/gitolite-admin/keydir/tom.pub
[gitadmin@hadoop ~]$ cp tmp/jerry.pub gitworkspace/gitolite1/gitolite-admin/keydir/jerry.pub
  • 修改gitolite.conf文件,新建版本库demo并配置用户权限
[gitadmin@hadoop gitolite-admin]$ vim conf/gitolite.conf

在文件最后添加以下内容:

repo demo
    RW+     =   tom
    R       =   jerry
  • 提交版本库内容并推送到服务器
[gitadmin@hadoop gitolite-admin]$ git add conf/
[gitadmin@hadoop gitolite-admin]$ git add keydir/
[gitadmin@hadoop gitolite-admin]$ git commit -m "add new repository demo"
[gitadmin@hadoop gitolite-admin]$ git config --global push.default simple
[gitadmin@hadoop gitolite-admin]$ git push

提供成功出现以下信息:

Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 1.15 KiB | 0 bytes/s, done.
Total 7 (delta 0), reused 0 (delta 0)
remote: 初始化空的 Git 版本库于 /home/git/repositories/demo.git/
To hadoop:gitolite-admin
   eec715f..db7eff0  master -> master

经过以上步骤,git服务器和管理器部署已经完毕,客户机用户可以使用git的版本库了。

2. 客户机使用git版本库

2.1 配置SSH

  1. 创建ssh公钥
    刚才在管理器添加用户公钥时已经将用户的公钥拷贝到了管理器中。
  2. 配置config文件
    创建~/.ssh/config文件并输入以下内容:
host hadoop
user git
hostname 192.168.92.2
port 22
identityfile ~/.ssh/tom

修改config文件权限为600:

[tom@hadoop gitworkspace]$ chmod 600 ~/.ssh/config

2.2 克隆git项目之demo

[tom@hadoop gitworkspace]$ git clone hadoop:demo

克隆成功后出现以下结果:

正克隆到 'demo'...
warning: 您似乎克隆了一个空版本库。

2.3 修改demo项目并推送到服务器

首先需要配置git账户信息:

[tom@hadoop demo]$ git config --global user.name "tom"
[tom@hadoop demo]$ git config --global user.email "tom@aliyun.com"

克隆项目之后就可以对项目进行修改,然后可以将修改推送到服务器:

[tom@hadoop demo]$ vim readme.txt	#新建了一个文件,输入了一些内容
[tom@hadoop demo]$ git add readme.txt
[tom@hadoop demo]$ git commit -m "add a new file."
[master(根提交) 28785f9] add a new file.
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt
[tom@hadoop demo]$ git config --global push.default simple
[tom@hadoop demo]$ git push
Counting objects: 3, done.
Writing objects: 100% (3/3), 220 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To hadoop:demo
 * [new branch]      master -> master

提交成功后,可以在服务器的demo.git文件夹下查看提交日志,可以看到刚才的提交结果:

[git@hadoop repositories]$ cd /home/git/repositories/demo.git/
[git@hadoop demo.git]$ git log
commit 28785f9f5d98e50d976703754aeba96e9f8799c6
Author: tom <tom@aliyun.com>
Date:   Tue Feb 18 15:47:15 2020 +0800

    add a new file.

参考文章:

  1. linux服务器上搭建gitolite实现对git server的版本库的权限控制
  2. CentOS搭建Git服务器及权限管理
  3. Git丨在CentOS下搭建私有的git服务器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值