CentOS 下Git服务器搭建(gitosis)


Git的基本工作流程

  • 在工作目录中修改某些文件。

  • 对修改后的文件进行快照,然后保存到暂存区域。

  • 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

Git服务器搭建

环境部署

  • 系统环境:
    服务器端:CentOS 6.5 ,ip:192.168.0.130
    客户端:CentOS 6.5 ,ip:192.168.0.110

  • 软件版本:
    服务器端:源码编译安装,git-1.9.0.tar.gz
    客户端:yum在线安装机制

安装

服务器端安装

  1. 安装git:
#yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
#wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz
#tar zxvf git-1.9.0.tar.gz
#cd git-1.9.0
#make prefix=/usr/local all
#make prefix=/usr/local install  #root用户运行
  1. 查看版本号:
#git --version
git version 1.9.0
  1. 安装gitosis:gitosis为Git用户权限管理系统,通过管理服务端的/home/git/.ssh/authorized_key文件来执行对用户权限的管理,是一个python模块包
#yum install python python-setuptools
#git clone git://github.com/res0nat0r/gitosis.git
#cd gitosis/
#python setup.py install
  1. 显示Finished processing dependencies for gitosis==0.2即表示成功

客户端安装

#yum install git
#git --version
git version 1.7.1

配置

ssh设置

客户端操作:生产密钥并上传到服务器端

#ssh-keygen -t rsa -C "你的邮箱(不能有数字,可以随便编)"
#scp ~/.ssh/id_rsa.pub root@192.168.0.130:~/

注意:这里会生成两个文件,id_rsa与id_rsa.pub。打开id_rsa.pub 看一下,如果最后面的邮箱地址有数字,后面配置会报错,所以这里如果有数字要重新生成。

服务器生成git用户

  1. 添加用户git:
#useradd -r -s /bin/sh -c 'git version control' -d /home/git git
  1. 设置权限:
#mkdir -p /home/git
#chown git:git /home/git
  1. 在服务器端生成管理库:
#sudo -H -u git gitosis-init < ~/id_rsa.pub
Initialized empty Git repository in /home/git//repositories/gitosis-admin.git/ Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/ 

注解:

  1. 生成的gitosis-admin为Git的用户访问权限管理库,gitosis通过这个git库来管理所有git库的访问权限。
  2. 通过执行初始化,该公钥的拥有者就能修改用于配置gitosis的那个特殊Git仓库了
  1. 修改上传权限:
#chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

客户端配置

  1. 客户端导出管理:
#mkdir -p /git-repo/
#cd /git-repo/
#git clone git@192.168.0.130:gitosis-admin.git
#cd gitosis-admin
#find .
./gitosis.conf
./keydir
./keydir/oot@vm1.pub

注解:

  1. 如果报错请尝试 git clone git@192.168.0.130:repositories/gitosis-admin.git
  2. gitosis.conf文件用来设置用户、仓库和权限的控制文件
  3. keydir目录则是保存所有具有访问权限用户公钥的地方
  4. git-repo目录为项目管理目录
  1. 客户端创建及设置管理项目
#cd /git-repo/gitosis-admin
查看已经上传密钥
#ls keydir/
root@vm1.pub
  1. 权限及权限控制
#vim gitosis.conf
[gitosis]


[group gitosis-admin]
writable = gitosis-admin
members = root@vm1        #显示用户root@vm1.pub是初始化gitosis公钥的拥有者,是唯一能管理gitosis-admin项目的人


[group jay_fans]          #组名称
members = root@vm1        #密钥用户名
writable = git-test       #项目名称

注解:

  1. members可以填多个用户,用户之间空格分隔
  2. writable为可写,只读为readonly,设置为只读则只能pull不能push

项目管理

项目创建

接下来我们在客户端创建一个git-test的项目,然后推送到服务端仓库。

  1. 在本地创建项目,并设为远程仓库,然后推送至服务端
#cd /git-repo
#mkdir git-test
#cd git-test
#git init
#touch README
#git add .
#git commit -a -m "init git-test"
#git remote add origin git@192.168.0.130:git-test.git
#git push origin master

注解:

在新项目git-test里首次推送数据到服务器前,需先设定该服务器地址为远程仓库,但你不用事先到服务器上手工创建该项目的裸仓库— Gitosis 会在第一次遇到推送时自动创建。

  1. 客户端给成员配置此项目的权限
修改gitosis.conf
[group jay_fans]     #  组名称
members = jay        #  项目成员
writable = git-test
  1. 权限配置推送至服务端
#git commit -a -m "granted jay commit rights to git-test"
#git push

注解:

gitosis实际上是从服务器端的/home/git/.gitosis.conf文件读取信息的,通过以上操作,会将新的权限信息写入到该文件中,如果搞错了配置,导致失去了推送权限,可以通过修改该文件来重新设定,如果你手工编辑该文件的话,它会一直保持到下次向 gitosis-admin 推送新版本的配置内容为止。

  1. 成员jay拉取代码
#git clone git@192.168.56.1:git-test.git

项目分配

  1. gitosis.conf 配置文件说明
[group gitosis-admin]   # 项目组 随意起名字即可 可以和项目同名
members = lfz@lfz root110 fengzhen # 此项目组成员 多个成员用空格分隔
writable = gitosis-admin    # writable是可读写 readonly是只读 等号后面是项目名 在仓库中对应 gitosis-admin.git
  1. 添加用户步骤
    • 用户在自己电脑的默认目录(mac中为~/.ssh/)下生成或者拿到id_rsa.pub文件,然后传给管理员。(注意:id_rsa.pub最后的邮箱部分不能用数字
    • 管理员将文件改名,例如改为abc.pub,此时abc就是此用户的用户名。然后放入gitosis-admin/keydir/目录下。
    • 管理员编辑gitosis.conf文件,以abc为用户名,添加到对应项目组内。
    • 管理员将更改推送到服务器仓库。
    • 此时,用户即获得项目权限,可以从远程仓库拉取项目。

后记

有几个使用当中需要注意的点:

  1. 如果pub文件没有和服务器中对应起来,操作的时候会提示输入git用户的密码,此时如果有密码的话同样可以使用管理功能。
  2. 将用户的pub文件和上传至服务器,其实是类似免密登录的原理,利用本地的私钥id_rsa和服务端的公钥id_rsa.pub实现不需要密码对项目进行管理。
  3. 如果pub文件和服务器没对应起来,也就是操作还需要输入git密码的时候,在进行git操作时,仓库的地址要加上repositories。例如:
原:
#git clone git@192.168.0.130:test.git
现:
#git@192.168.0.130:repositories/test.git
  1. 如果不小心将有数字的pub传入服务端仓库,导致仓库不能使用。可以登录仓库所在的服务器,git用户下,编辑/home/git/.ssh/authorized_keys,删除对应的有数字的秘钥所在行就可以恢复。



参考: http://blog.chinaunix.net/uid-26729093-id-4652536.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容

  • gitosis: 把所有用户的公钥保存在 authorized_keys 文件的做法,只能凑和一阵子,当用户数量达...
    晓蜻蜓阅读 5,537评论 2 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • (一) 我曾经是个诚实的女孩子,一说谎就会脸红到耳根,甚至跟男孩子讲话也会脸红。 我理想中的爱情是“窈窕淑女,君子...
    小淑文阅读 2,575评论 97 104
  • 我丢了聘任证的照片,所以需要补办。但是放了学之后,我发现,怎么都找不着了。。 明明记得抽屉有一张的,现在却突然没有...
    马上做阅读 396评论 0 0
  • 今天好忙碌的一天,上午约了美容,中午闺女回家 闺女写作业,我打客服调了一个线,下午继续带娃上课,跟进了两个潜...
    最爱的家阅读 121评论 0 0