centos+git+gitolite 安装和部署
2017-07-31 21:30
381 查看
转自:http://www.cnblogs.com/ponyliu/p/5383096.html
在Git服务管理工具这个领域,主要有三种流行的方案,它们分别是
Gitosis-轻量级,开源项目,使用SSH公钥认证,只能做到库级的权限控制。目前项目已经停止开发,不再维护。
Gitolite-轻量级,开源项目,使用SSH公钥认证,能做到分支级的权限控制。
Git+Repo+Gerrit-超级重量级,集版本控制,库管理和代码审核为一身。可管理大型及超大型项目。
大名鼎鼎的Android平台就是使用的Git+Repo+Gerrit。对于个人,中小型企业及一些开源项目而言,如果没有特殊的要求,其实没有
必要去架设上面第三种方案git服务器。Gitolite提供的服务已经足够用。下面将详细讲解怎么搭建Gitolite服务器。
一.部署环境
系统:CentOS6.4x64最小化安装
IP:192.168.52.131
git默认使用SSH协议,在服务器上基本上不用怎么配置就能直接使用。但是如果面向团队服务,需要控制权限的话,还是用gitolite方便些。
首先用x-shell工具链接centos系统
二.安装基础依赖包
[root@nginx~]#yuminstallcurl-develexpat-develgettext-developenssl-develzlib-develperl-devel-y
三.在线安装git
[root@bogon~]#yum-yinstallgit
下载安装包安装方式:
[root@bogongit-2.2.0]#tarxfgit-2.2.0.tar.gz
[root@bogongit-2.2.0]#cdgit-2.2.0/
[root@bogongit-2.2.0]#makeprefix=/usr/local/gitall
[root@bogongit-2.2.0]#makeprefix=/usr/local/gitinstall
增加软连接
[root@bogongit-2.2.0]#ln-s/usr/local/git/bin/*/usr/bin/
验证结果,显示出版本号,表示安装成功
[root@bogongit-2.2.0]#git--version
gitversion2.2.0
五.创建git用户
[root@bogon~]#useraddgit
#切换到git用户
[root@bogon~]#su-git
[git@bogon~]$pwd#查看当前位置
/home/git
#确认.ssh/authorized_key是否存在
[git@bogon~]$ls-a
....bash_logout.bash_profile.bashrc.gnome2.mozilla
六.获取git版本库并安装
[git@bogon~]$gitclonehttps://github.com/sitaramc/gitolite
然后创建bin目录并安装gitolite到bin目录($表示普通用户)
[git@bogon~]$mkdir$HOME/bin
[git@bogon~]$gitolite/install-to$HOME/bin
[git@bogon~]$cdbin/
[git@bogonbin]$ls
commandsgitolitegitolite-shelllibsyntactic-sugartriggersVERSIONVREF
七.配置gitolite管理员
gitolite使用特殊的版本库gitolite-admin来管理用户和版本库,所以需要创建一个管理员来管理所有的用户和版本库
7.1用git用户生成公钥(注:如果你是接着上面一直做下来的,那么只需要输入cd,然后回车,则就进入了该用户的目录,如果不是git用户,则需要输入su–git,来切换到git用户)
[git@bogon~]cd
[git@bogon~]$ssh-keygen-trsa
7.2修改.ssh/id_rsa.pub为admin.pub(为什么要改成admin.pub因为gitolite根据这个文件名来设立帐号.我这里用admin
[git@bogon~]$mv.ssh/id_rsa.pubadmin.pub
7.3使用管理员公钥安装gitolite(然后去/home/git/repositories里面,可以看见仓库文件.gitolite-admin.git和test.git一个是管理仓库的,一个是测试用)
[git@bogon~]$$HOME/bin/gitolitesetup-pkadmin.pub
7.4生成管理员管理仓库(不需要输密码)
[git@bogon~]$gitclonegit@127.0.0.1:gitolite-admin
进入仓库后可以看到conf和keydir,conf/gitolite.conf是添加用户/仓库的配置,keydir是放对应用户的公想·x钥.并且此时,admin.pub这个公钥可以删除了
7.5编辑gitolite.conf
也可以你找下图操作:
打开图按照下图添加:
上面的配置含义是:
定义两个用户组:admin和user
定义两个版本库:gitolite-admin和project
用户admin对这两个版本库有(读写删除)RW+权限
user组对project有(读写)RW权限
也可按照格式,添加多个组,多个版本库
如有一个组中有多个用户,则以空格为分割,如下图:
7.6然后提交修改(注:修改用户或者增加版本库后在下图中的目录中提交修改,否则会提示修改失败)
7.7提交完后,查看管理仓库中多了一个project.git
这个时候,服务器已经搭建完毕了,只需要添加用户并给用户添加权限就可以了。下面我们添加用户测试
7.8权限控制
[root@nginxgitolite-admin]#gitstatus#查看git库状态
Onbranchmaster
Yourbranchisup-to-datewith'origin/master'.
Changesnotstagedforcommit:
(use"gitadd<file>..."toupdatewhatwillbecommitted)
(use"gitcheckout--<file>..."todiscardchangesinworkingdirectory)
modified:conf/gitolite.conf#表示该文件被修改
Untrackedfiles:(use"gitadd<file>..."toincludeinwhatwillbecommitted)
keydir/test.pub#增加的文件
nochangesaddedtocommit(use"gitadd"and/or"gitcommit-a")
#将有改动的文件添加到git库
[root@nginxgitolite-admin]#gitaddkeydir/test.pubconf/gitolite.conf
[root@nginxgitolite-admin]#gitstatus
Onbranchmaster
Yourbranchisup-to-datewith'origin/master'.
Changestobecommitted:(use"gitresetHEAD<file>..."tounstage)
modified:conf/gitolite.conf
newfile:keydir/test.pub
#这里表示已添加#在第一次执行gitcommit命令时会有以下提示,需要使用者表明身份
[root@nginxgitolite-admin]#gitcommit-m"addrepomytest;addusertest"
***Pleasetellmewhoyouare.Run
gitconfig--globaluser.email"you@example.com"
gitconfig--globaluser.name"YourName"tosetyouraccount'sdefaultidentity.
Omit--globaltosettheidentityonlyinthisrepository.
fatal:unabletoauto-detectemailaddress(got'root@nginx.(none)')
#在这里我们执行以下2条命令
[root@nginxgitolite-admin]#gitconfig--globaluser.email"lyao@aaa.com"
[root@nginxgitolite-admin]#gitconfig--globaluser.name"lyao"
#再重新执行gitcommit命令
[root@nginxgitolite-admin]#gitcommit-m"addrepomytest;addusertest"
[master7b877e7]addrepomytest;
addusertest2fileschanged,5insertions(+)
createmode100644keydir/test.pub
#执行完以上命令后,修改的文件只是提交在本地了,并没有提交到gitserver中,还需要执行gitpush命令
[root@nginxgitolite-admin]#gitpushoriginmaster#推送到远端的master分支
Countingobjects:6,done.Compressingobjects:100%(5/5),done.
Writingobjects:100%(6/6),817bytes|0bytes/s,done.
Total6(delta0),reused0(delta0)
remote:InitializedemptyGitrepositoryin/home/git/repositories/mytest.git
/Togit@192.168.3.27:gitolite-admin
3554f3d..7b877e7master->maste
八、客户端验证
8.1centos客户端验证
[root@ipython~]#gitclonegit@192.168.3.27:/mytest.git
InitializedemptyGitrepositoryin/root/mytest/.git/
warning:Youappeartohaveclonedanemptyrepository.
[root@ipython~]#ll
total3240
drwxr-xr-x3rootroot4096Apr1714:45mytest
[root@ipython~]#cdmytest/
[root@ipythonmytest]#gitstatus
#Onbranchmaster#
#Initialcommit
#nothingtocommit(create/copyfilesanduse"gitadd"totrack)
#创建1个文件1.txt并添加到git
[root@ipythonmytest]#touch1.txt
[root@ipythonmytest]#gitadd1.txt
[root@ipythonmytest]#gitcommit"addfile1.txt"
#第一次使用需要表明身份
[root@ipythonmytest]#gitcommit-m"addfile1.txt"
[master(root-commit)08e9a37]addfile1.txt
Committer:root<root@ipython.(none)>
Yournameandemailaddresswereconfiguredautomaticallybased
onyourusernameandhostname.Pleasecheckthattheyareaccurate.
Youcansuppressthismessagebysettingthemexplicitly:
gitconfig--globaluser.name"YourName"
gitconfig--globaluser.emailyou@example.com
Iftheidentityusedforthiscommitiswrong,youcanfixitwith:
gitcommit--amend--author='YourName<you@example.com>'
fileschanged,0insertions(+),0deletions(-)
createmode1006441.txt
[root@ipythonmytest]#gitconfig--globaluser.emailtest@aaa.com
[root@ipythonmytest]#gitconfig--globaluser.nametest
[root@ipythonmytest]#gitcommit-m"addfile1.txt"
#Onbranchmasternothingtocommit(workingdirectoryclean)
[root@ipythonmytest]#gitstatus
#Onbranchmasternothingtocommit(workingdirectoryclean)
[root@ipythonmytest]#ll
total0-rw-r--r--1rootroot0Apr1714:471.txt
[root@ipythonmytest]#gitpushoriginmaster
Countingobjects:3,done.Writingobjects:100%(3/3),206bytes,done.
Total3(delta0),reused0(delta0)Togit@192.168.3.27:/mytest.git
*[newbranch]master->master
8.2windows客户端验证
1)在客户机上安装安正的git程序,在D盘新建一个文件夹test,右键选择GitBash
2)打开一个DOS栏,输入ssh-keygen.exe。这里可以用Tab键补全,然后有提示输入y后一直回车到结束
3)然后打开客户机用户目录下的.ssh中能看到id_rsa私钥
4)然后把id_rsa这个私钥文件上传到服务器的/home/git/gitolite-admin/keydir目录中
5)然后把这个新传上来的私钥改名
[git@bogonconf]$vigitolite.conf
这里表示test用户对project.git版本库有读写的权限。也可以直接在版本库下面添加用户权限
6)提交修改
7)回客户端
打开Bash窗口,输入
gitclonegit@192.168.52.131:project.git
链接服务器中的project.git版本库,其中IP地址是自己服务器的IP地址,冒号后面需要访问也是刚刚给该用户有权限访问的版本库
然后会同步下来一个文件夹名为project的文件,这个就是版本库,打开这个文件夹,创建一个任意文件
在客户机上提交修改文件:
打开project文件夹,创建一个任意文件,然后打开Bash窗口,输入提交修改命令
[git@bogonconf]$gitadd.
[git@bogonconf]$gitcommit-am"newproject"
[git@bogonconf]$gitpushoriginmaster
这样,修改过的数据就上传到服务器上去了,其他用户同样可以同步下来
从服务器上往别的客户机上同步更改后的版本库的命令是:
gitpull
在Git服务管理工具这个领域,主要有三种流行的方案,它们分别是
Gitosis-轻量级,开源项目,使用SSH公钥认证,只能做到库级的权限控制。目前项目已经停止开发,不再维护。
Gitolite-轻量级,开源项目,使用SSH公钥认证,能做到分支级的权限控制。
Git+Repo+Gerrit-超级重量级,集版本控制,库管理和代码审核为一身。可管理大型及超大型项目。
大名鼎鼎的Android平台就是使用的Git+Repo+Gerrit。对于个人,中小型企业及一些开源项目而言,如果没有特殊的要求,其实没有
必要去架设上面第三种方案git服务器。Gitolite提供的服务已经足够用。下面将详细讲解怎么搭建Gitolite服务器。
一.部署环境
系统:CentOS6.4x64最小化安装
IP:192.168.52.131
git默认使用SSH协议,在服务器上基本上不用怎么配置就能直接使用。但是如果面向团队服务,需要控制权限的话,还是用gitolite方便些。
首先用x-shell工具链接centos系统
二.安装基础依赖包
三.在线安装git
下载安装包安装方式:
五.创建git用户
六.获取git版本库并安装
然后创建bin目录并安装gitolite到bin目录($表示普通用户)
七.配置gitolite管理员
gitolite使用特殊的版本库gitolite-admin来管理用户和版本库,所以需要创建一个管理员来管理所有的用户和版本库
7.1用git用户生成公钥(注:如果你是接着上面一直做下来的,那么只需要输入cd,然后回车,则就进入了该用户的目录,如果不是git用户,则需要输入su–git,来切换到git用户)
7.2修改.ssh/id_rsa.pub为admin.pub(为什么要改成admin.pub因为gitolite根据这个文件名来设立帐号.我这里用admin
7.3使用管理员公钥安装gitolite(然后去/home/git/repositories里面,可以看见仓库文件.gitolite-admin.git和test.git一个是管理仓库的,一个是测试用)
7.4生成管理员管理仓库(不需要输密码)
进入仓库后可以看到conf和keydir,conf/gitolite.conf是添加用户/仓库的配置,keydir是放对应用户的公想·x钥.并且此时,admin.pub这个公钥可以删除了
7.5编辑gitolite.conf
[git@bogon~]$vimgitolite-admin/conf/gitolite.conf
也可以你找下图操作:
打开图按照下图添加:
上面的配置含义是:
定义两个用户组:admin和user
定义两个版本库:gitolite-admin和project
用户admin对这两个版本库有(读写删除)RW+权限
user组对project有(读写)RW权限
也可按照格式,添加多个组,多个版本库
如有一个组中有多个用户,则以空格为分割,如下图:
7.6然后提交修改(注:修改用户或者增加版本库后在下图中的目录中提交修改,否则会提示修改失败)
提交修改:
[git@bogonconf]$gitaddkeydir/test.pubconf/gitolite.conf [git@bogonconf]$gitadd.[git@bogonconf]$gitcommit-am"newproject" [git@bogonconf]$gitpushoriginmaster
#注:所有的提交修改都是这三条命令,在客户端上提交文件也是这三个命令第二条命令后面引号中的可以是任意,最好是能体现是做了什么修改
7.7提交完后,查看管理仓库中多了一个project.git
[git@bogon~]$cdrepositories/ [git@bogonrepositories]$ls gitolite-admin.gitproject.git
这个时候,服务器已经搭建完毕了,只需要添加用户并给用户添加权限就可以了。下面我们添加用户测试
7.8权限控制
八、客户端验证
8.1centos客户端验证
8.2windows客户端验证
1)在客户机上安装安正的git程序,在D盘新建一个文件夹test,右键选择GitBash
2)打开一个DOS栏,输入ssh-keygen.exe。这里可以用Tab键补全,然后有提示输入y后一直回车到结束
3)然后打开客户机用户目录下的.ssh中能看到id_rsa私钥
4)然后把id_rsa这个私钥文件上传到服务器的/home/git/gitolite-admin/keydir目录中
5)然后把这个新传上来的私钥改名
[git@bogonconf]$vigitolite.conf
这里表示test用户对project.git版本库有读写的权限。也可以直接在版本库下面添加用户权限
6)提交修改
[git@bogonconf]$gitadd. [git@bogonconf]$gitcommit-am"newproject" [git@bogonconf]$gitpushoriginmaster
7)回客户端
打开Bash窗口,输入
gitclonegit@192.168.52.131:project.git
链接服务器中的project.git版本库,其中IP地址是自己服务器的IP地址,冒号后面需要访问也是刚刚给该用户有权限访问的版本库
然后会同步下来一个文件夹名为project的文件,这个就是版本库,打开这个文件夹,创建一个任意文件
在客户机上提交修改文件:
打开project文件夹,创建一个任意文件,然后打开Bash窗口,输入提交修改命令
[git@bogonconf]$gitadd.
[git@bogonconf]$gitcommit-am"newproject"
[git@bogonconf]$gitpushoriginmaster
这样,修改过的数据就上传到服务器上去了,其他用户同样可以同步下来
从服务器上往别的客户机上同步更改后的版本库的命令是:
gitpull
相关文章推荐
- centos+git+gitolite 安装和部署
- Centos+git+gitolite 安装和部署
- centos+git+gitolite 安装和部署
- centos+git+gitolite 安装和部署
- CentOS 6.4x64安装git和gitolite服务器
- CentOS 6.4x64安装git和gitolite服务器
- (原创)Centos6.4上用gitolite部署git服务器
- centos系统 + git源码安装 + gitolite用户权限控制 安装与配置
- centos git gitolite安装笔记
- centos 安装git服务器,配置使用证书登录并你用hook实现代码自动部署
- CentOS安装git及使用Gitolite来管理版本库
- 2014年3月30日,晚上,给CentOS安装Git和Gitolite
- Centos 7.X 部署基于Git&Gitolite的分布式版本控制系统
- centos7 安装 gitolite (git服务器)
- CentOS 如何安装git server + Gitolite 【配置不成功需要再测试2015-8-20】
- centos7 下 安装git 并实现自动部署
- Apache-Tomcat-9在centos7.4环境中安装部署
- Kickstart自动化安装部署Centos系统平台的搭建
- 阿里云服务器CentOS 6.3下快速安装部署 LAMP 、vsftpd 环境的方法
- CentOS 7.x安装部署Memcached服务器的详细方法