烂泥:git服务器搭建

本文由ilanniweb提供友情赞助,首发于烂泥行天下

想要获得更多的文章,可以关注我的微信ilanniweb

公司代码管理使用的一直都是svn,最近由于部门童鞋的要求,希望使用git进行管理。于是就有了本篇文章git服务器的搭建。

本来是打算直接上gitlab的,这样方便,而且也一步到位的把代码管理这块处理完毕。但是经过测试发现,如果对gitlab及其相关软件不熟悉的话,直接上gitlab麻烦的事情还真多。

而gitlab依赖的软件还比较多,自己也没有太多的时间去进行长时间的测试。所以想了想还是先使用git+gitolite3方式,等后续各位开发的童鞋,都熟悉了再上gitlab。

下面开始介绍git+gitolite3的安装与配置。在安装git和gitolite3之前,我们先来介绍下,其各自的功能。

一、git和gitolite3功能介绍

git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。

而gitolite3是用于配置git权限管理的。git的权限管理可以使用gitolite和gitosis这两款软件,但是目前gitosis项目已经无人维护。

考虑到软件的持续性,我们选择gitolite来管理git的权限,而gitolite最新的版本是gitolite3,所以选择安装gitolite3。

除此之外gitolite权限管理和svn的权限配置最为接近,这样为后续svn代码迁移到git能做很好的准备。

gitolite3是基于perl语言的,维护和更新都比较积极。项目地址如下:

https://github.com/sitaramc/gitolite

二、安装git和gitolite3

git和gitolite3功能介绍完毕后,我们现在来开始进行安装。git和gitolite3的安装很简单,根据OS不同,在此我们分别介绍下centos os和ubuntu os下的安装。

2.1 在centos os上安装

在centos os上的安装很简单,我们直接使用yum方式进行安装。在安装之前,需要我们安装额外的epel源。如下:

rpm -ivh http://mirrors.aliyun.com/epel/6/x86_64/epel-release-6-8.noarch.rpm

epel源安装完毕后,我们来安装git和gitolite3,如下:

yum -y install git gitolite3

clip_image001[4]

clip_image002[4]

查看下git和gitolite3安装时生成的文件,如下:

rpm -ql git

clip_image003[4]

rpm -ql gitolite3 |tac

clip_image004[4]

查看gitolite3的说明文档,如下:

cat /usr/share/doc/gitolite3-3.6.5/gitolite3-README-fedora

clip_image005[4]

查看安装时生成的用户,如下:

cat /etc/passwd

clip_image006[4]

通过上图,我们可以很明显看出安装git和gitolite3时,程序会自动生成gitolite3用户,并且该用户的家目录为/var/lib/gitolite3。

到此centos os上安装git和gitolite3就完毕了。

2.2 在ubuntu os上安装

ubuntu os上安装git和gitolite3,也是很简单的直接使用apt-get进行安装即可。如下:

sudo apt-get -y install git gitolite3

clip_image007[4]

下图是配置管理员ssh密钥的,在此我们不进行配置。

clip_image008[4]

clip_image009[4]

查看下git和gitolite3安装时生成的文件,如下:

dpkg -L git

clip_image010[4]

dpkg -L gitolite3|tac

clip_image011[4]

查看gitolite3的说明文档,如下:

cat /usr/share/doc/gitolite3/README.Debian

clip_image012[4]

查看安装时是否生成用户,如下:

cat /etc/passwd

clip_image013

通过上图,我们可以很明显的看出在ubuntu os上安装git和gitolite3时,默认是没有添加用户的,也就是说后续需要我们自己手工添加相关用户。

到此ubuntu os上安装git和gitolite3就完毕了。

三、配置git和gitolite3

git和gitolite3安装完毕后,我们现在来开始配置git。git的配置根据OS不同,我们也分别介绍下。

3.1 在centos os上配置git和gitolite3

centos上配置git和gitolite3比较简单。

首先我们要把一个ssh公钥文件admin.pub上传到git服务器上,然后把admin.pub复制到gitolite3用户家目录下,授权为gitolite3用户所有该文件,最后使用gitolite命令进行相关的初始化。如下:

cp admin.pub /var/lib/gitolite3/

chown gitolite3:gitolite3 -R /var/lib/gitolite3/admin.pub

ll /var/lib/gitolite3/admin.pub

clip_image014

切换到gitolite3用户下,执行gitolite setup初始化相关命令,如下:

su – gitolite3

gitolite setup -pk admin.pub

ls -al

clip_image015[4]

查看初始化生成的仓库,如下:

cd repositories/

ll

clip_image016[4]

通过上图,我们可以看到gitolite setup初始化后,会生成两个仓库gitolite-admin.git和testing.git,其中gitolite-admin.git管理git权限的仓库。

到此centos os上配置git和gitolite3就已经完毕。

3.2 在ubuntu os上配置git和gitolite3

ubuntu os上配置git和gitolite3要比centos上配置多了一步添加用户的操作,其他的操作步骤就和centos os上配置一样了。

添加gitolite3用户,如下:

sudo useradd -m -s /bin/bash gitolite3

cat /etc/passwd |grep gitolite3

clip_image017[4]

添加ssh公钥文件admin.pub,并授权,如下:

cp admin.pub /home/gitolite3/

chown gitolite3:gitolite3 /home/gitolite3/admin.pub

clip_image018[4]

初始化git,如下:

su – gitolite3

ssh-keygen

gitolite setup -a admin

gitolite setup -pk admin.pub

clip_image019[4]

clip_image020[4]

通过上图,我们可以看到gitolite setup初始化后和centos上是一样的,都会生成两个仓库gitolite-admin.git和testing.git,其中gitolite-admin.git管理git权限的仓库。

到此ubuntu os上配置git和gitolite3就已经完毕。

四、提交一个文件到git仓库

git和gitolite3安装和配置完毕后,我们就可以通过客户端进行管理git仓库。

在此我们直接使用git命令进行管理,在使用git命令之前,我们需要把前面配置git仓库时的ssh公钥文件admin.pub,和其对应的ssh私钥文件内容,全部复制到git客户端对应用户.ssh目录下的id_rsa.pub和id_rsa文件中。如下:

cat admin > ~/.ssh/id_rsa

cat admin.pub > ~/.ssh/id_rsa.pub

clip_image021[4]

ssh密钥相关已经配置好后,我们现在来克隆gitolite-admin.git仓库,并修改testing仓库的权限。如下:

git clone gitolite3@192.168.1.8:gitolite-admin.git

clip_image022[4]

修改gitolite3仓库权限配置文件,如下:

cd gitolite-admin

vim conf/gitolite.conf

repo gitolite-admin

RW+ = admin

repo testing

RW+ = @all

RW+ = admin

clip_image023[4]

修改完毕后,然后进行提交。但是在提交之前,我们还要配置git提交时的用户名和邮箱,如下:

git config –global user.name “ilanni”

git config –global user.email “ilanni@ilanni.com”

clip_image024[4]

以上配置完毕后,我们来提交刚刚操作,使用如下命令:

git add .

git commit -m ‘ilannitest’

git push

上述三行命令中,其中git add .的意思是添加本地进行的所有文件。git commit –m ‘ilannitest’的意思是本次提交都是做了什么操作,这个可以进行定义。git push的意思是把本地的提交推送到远程服务器上。

clip_image025[4]

这样我们就可以直接git clone testing仓库了。

当然默认情况下admin用户也是可以直接git clone testing仓库的,在此只是为了演示。

现在我们来git clone tesing仓库,然后提交一个文件到仓库进行测试。如下:

git clone gitolite3@192.168.1.8:testing.git

clip_image026[4]

通过上图,我们可以看到testing仓库,是一个空的仓库。现在我们进入该仓库目录,创建一个ilanni.txt的文件,如下:

cd testing/

vim ilannni.txt

clip_image027[4]

现在提交进行的操作,如下:

git add .

git commit -m ‘ilannitext’

git push origin master

注意:如果是一个仓库,第一次进行提交git push时,要加入origin master。

clip_image028[4]

在成功把刚刚的操作推送到远程仓库后,我们现在来查看git的日志,以及目前git的状态。如下:

git pull

git log

git status

注意:git pull表示拉取仓库的最新状态。

clip_image029[4]

通过上图,我们可以看到git的提交log,以前git目前的状态。

到此有关使用git和gitolite3搭建git服务器就已经全部结束。

未经允许不得转载:烂泥行天下 » 烂泥:git服务器搭建

赞 (8) 打赏

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

支付宝扫一扫打赏

微信扫一扫打赏