设为首页 收藏本站
查看: 1350|回复: 0

[经验分享] CentOS 6.4x64安装git和gitolite服务器

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-20 12:44:37 | 显示全部楼层 |阅读模式
一.部署环境  
    系统:CentOS 6.4x64 最小化安装  
    IP:192.168.3.27

二.安装基础依赖包   
1
[iyunv@nginx ~]#yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel -y




三.下载git-2.2.0.tar.gz
1
[iyunv@nginx ~]#wget https://www.kernel.org/pub/software/scm/git/git-2.2.0.tar.gz




四.解压文件到当前目录下,并安装
1
2
3
4
5
6
7
8
9
10
11
[iyunv@nginx git-2.2.0]#tar xf git-2.2.0.tar.gz
[iyunv@nginx git-2.2.0]#cd  git-2.2.0/
[iyunv@nginx git-2.2.0]#make prefix=/usr/local/git all
[iyunv@nginx git-2.2.0]#make prefix=/usr/local/git install

增加软连接
[iyunv@nginx git-2.2.0]#ln -s /usr/local/git/bin/* /usr/bin/

验证结果,显示出版本号,表示安装成功
[iyunv@nginx git-2.2.0]#git --version
git version 2.2.0




五.创建git用户
1
[iyunv@nginx ~]# useradd git




六.在git用户家目录下安装gitolite
1
2
3
[iyunv@nginx ~]# su git
[git@nginx root]$ cd
[git@nginx ~]$ mkdir bin




七.克隆gitolite源码
1
2
3
4
5
6
7
[git@nginx ~]$ git clone https://github.com/sitaramc/gitolite.git
Cloning into 'gitolite'...remote: Counting objects: 8884, done.
remote: Total 8884 (delta 0), reused 0 (delta 0), pack-reused 8884Receiving
objects: 100% (8884/8884), 3.66 MiB | 179.00 KiB/s, done.
Resolving deltas: 100% (5055/5055), done.Checking connectivity... done.
[git@nginx ~]$ ls
bin  gitolite




八.安装gitolite
1
2
3
[git@nginx ~]$ ./gitolite/install --to /home/git/bin/
[git@nginx ~]$ ls bin/
commands  gitolite  gitolite-shell  lib  syntactic-sugar  triggers  VERSION  VREF




九.配置gitolite管理员
    生成管理员账户的公钥(此处指定本地root用户为管理员,键入回车使用默认值)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[iyunv@nginx ~]# ssh-keygen
[iyunv@nginx ~]# cp .ssh/id_rsa.pub /tmp/admin.pub

切换回git用户,为gitolite配置管理员
[git@nginx ~]$ bin/gitolite setup -pk /tmp/admin.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)

[git@nginx ~]$ ls
bin  gitolite  projects.list  repositories




十.管理员日常管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[iyunv@nginx ~]# git clone git@192.168.3.27:gitolite-admin
Cloning into 'gitolite-admin'...The authenticity of host
'192.168.3.27 (192.168.3.27)' can't be established.
RSA key fingerprint is c4:34:02:55:ad:42:8a:65:ba:94:00:20:48:d7:3c:33.
Are you sure you want to continue connecting (yes/no)? yes
#这里是第一次连接,需要输入yes进行确认
Warning: Permanently added '192.168.3.27' (RSA) to the list of known hosts.
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
Receiving objects: 100% (6/6), 734 bytes | 0 bytes/s, done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Checking connectivity... done.

[iyunv@nginx gitolite-admin]# ls
conf  keydir
[iyunv@nginx gitolite-admin]# pwd
/root/gitolite-admin




验证:
创建库、添加用户
例如某test用户访问git服务器上的mytest库

test用户向git服务器管理(此处是之前的服务器本地的root用户)提交自己的ssh无密码公钥

管理员将test的公钥复制到 gitolite-admin/keydir/ 下

注:该key需要在test用户机器上使用ssh-keygen生成,再传送到192.168.3.27/tmp目录下
1
[iyunv@nginx ~]# cp /tmp/test.pub /root/gitolite-admin/keydir/



管理员创建myFirstRepo库,并给test分配权限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
[iyunv@nginx ~]# cd gitolite-admin/conf/
[iyunv@nginx conf]# vim gitolite.conf
#以下是gitolite.conf的默认内容
repo gitolite-admin   
    RW+     =   admin
repo testing   
    RW+     =   @all
     
下边定义mytest库,并且指定用户权限:
#在gitolite.conf中添加以下内容
@mygroup    = test
repo mytest   
    RW+     = @mygroup
注:此处@mygroup是一个组,给mygroup组赋予对mytest这个库的读、写、推送的权限
(详细规则可参考gitolite的readme.txt)管理员将对gitolite-admin的修改(建库、加用户)
提交到git服务器

[iyunv@nginx gitolite-admin]# pwd
/root/gitolite-admin
[iyunv@nginx gitolite-admin]# git status    #查看git库状态
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:  
(use "git add <file>..." to update what will be committed)  
(use "git checkout -- <file>..." to discard changes in working directory)   

    modified:   conf/gitolite.conf        #表示该文件被修改
Untracked files:  (use "git add <file>..." to include in what will be committed)
    keydir/test.pub        #增加的文件
no changes added to commit (use "git add" and/or "git commit -a")

#将有改动的文件添加到git库
[iyunv@nginx gitolite-admin]# git add keydir/test.pub conf/gitolite.conf
[iyunv@nginx gitolite-admin]# git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:  (use "git reset HEAD <file>..." to unstage)  
    modified:   conf/gitolite.conf   
    new file:   keydir/test.pub  
    #这里表示已添加#在第一次执行git commit命令时会有以下提示,需要使用者表明身份

[iyunv@nginx gitolite-admin]# git commit -m "add repo mytest; add user test"
*** Please tell me who you are.Run  
    git config --global user.email "you@example.com"  
    git config --global user.name "Your Name"to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@nginx.(none)')

#在这里我们执行以下2条命令
[iyunv@nginx gitolite-admin]# git config --global user.email "lyao@aaa.com"
[iyunv@nginx gitolite-admin]# git config --global user.name "lyao"

#再重新执行git commit命令
[iyunv@nginx gitolite-admin]# git commit -m "add repo mytest; add user test"
[master 7b877e7] add repo mytest;
add user test 2 files changed, 5 insertions(+)
create mode 100644 keydir/test.pub

#执行完以上命令后,修改的文件只是提交在本地了,并没有提交到git server中,还需要执行git push命令
[iyunv@nginx gitolite-admin]# git push origin master    #推送到远端的master分支
Counting objects: 6, done.Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 817 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
remote: Initialized empty Git repository in /home/git/repositories/mytest.git
/To git@192.168.3.27:gitolite-admin   
3554f3d..7b877e7  master -> master




客户端验证:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[iyunv@ipython ~]# git clone git@192.168.3.27:/mytest.git
Initialized empty Git repository in /root/mytest/.git/
warning: You appear to have cloned an empty repository.
[iyunv@ipython ~]# ll
total 3240
drwxr-xr-x 3 root root    4096 Apr 17 14:45 mytest
[iyunv@ipython ~]# cd mytest/
[iyunv@ipython mytest]# git status
# On branch master#
# Initial commit
#nothing to commit (create/copy files and use "git add" to track)

#创建1个文件1.txt并添加到git
[iyunv@ipython mytest]# touch 1.txt
[iyunv@ipython mytest]# git add 1.txt
[iyunv@ipython mytest]# git commit "add file 1.txt"

#第一次使用需要表明身份
[iyunv@ipython mytest]# git commit -m "add file 1.txt"
[master (root-commit) 08e9a37] add file 1.txt
Committer: root <root@ipython.(none)>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:   
    git config --global user.name "Your Name"   
    git config --global user.email you@example.com
If the identity used for this commit is wrong, you can fix it with:
   git commit --amend --author='Your Name <you@example.com>'
    0 files changed, 0 insertions(+), 0 deletions(-)
    create mode 100644 1.txt

[iyunv@ipython mytest]# git config --global user.email test@aaa.com
[iyunv@ipython mytest]# git config --global user.name test

[iyunv@ipython mytest]# git commit -m "add file 1.txt"
# On branch masternothing to commit (working directory clean)

[iyunv@ipython mytest]# git status
# On branch masternothing to commit (working directory clean)

[iyunv@ipython mytest]# ll
total 0-rw-r--r-- 1 root root 0 Apr 17 14:47 1.txt

[iyunv@ipython mytest]# git push origin master
Counting objects: 3, done.Writing objects: 100% (3/3), 206 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)To git@192.168.3.27:/mytest.git
* [new branch]      master -> master



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58881-1-1.html 上篇帖子: Docker:通过Git部署 下篇帖子: [更新Github地址]python学习,自己写了个简单聊天工具mychat 服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表