gitosis服务器搭建

最近由于项目需要,学习搭建gitosis服务器,参考各种网络贴,踩了无数坑,终于找到一个前辈的比较完整的搭建步骤,非常感谢,附上链接

http://www.cnblogs.com/candle806/p/4064610.html


搭建环境:客户端windows,服务器Ubuntu 14.04

搭建步骤:

1、更新Ubuntu server

  操作如下:

  $ apt-get update

  $ apt-get upgrade

2、安装openssh的server和client

  其实通常情况下,Ubuntu server都默认安装了openssh。安装SSH的目的,SSH 协议用于为 Git 提供远程读写操作,是远程写操作的标准服务,ssh可用于远程登录,服务端需要安装openssh-server,客户端需要安装openssh-client。介绍ssh协议是因为gitolite以及gitosis都是基于ssh公钥认证的。

  安装openssh之前,可以先查看是否安装过

  $ ps -ef | grep ssh

  如果没有,就继续如下安装步骤,

  $ sudo apt-get install openssh-server openssh-client

3、安装git

  $ sudo apt-get install git-core  

  安装完毕即可

4、配置git用户

  在Ubuntu Server上新增一个git用户,用于为安装gitosis做准备

  $ sudo adduser --system --shell /bin/bash --group git  // 创建用户 git,并设置用户的 shell 为可登录的 shell,如 /bin/bash,同时添加同名的用户组。

  $ sudo adduser git ssh  // 有的系统,只允许特定的用户组(如 ssh 用户组)的用户才可以通过 SSH 协议登录,这就需要将新建的 git 用户添加到 ssh 用户组中。

  $ sudo passwd git  // 为 git 用户设置口令。

经过以上设置,在客户端的git bash中链接服务器时就不用输入密码了

5、创建git Server的仓库存储

  $ sudo mkdir /home/git/repositories  // 创建git仓库存储目录

  $ sudo chown git:git /home/git/repositories  // 设置只允许git用户才能访问此目录

  $ sudo chmod 755 /home/git/repositories  // 设置目录访问的可读写或执行的权限

  初始化一下服务器的git用户,这一步其实是为了安装gitosis做准备。在任何一 台客户端机器上使用git,第一次需要初始化一下:

  $ git config --global user.name "name"       // 例如:james

  $ git config --global user.email "name@server"   // 例如:james@yahoo.com

6、获取Gitosis,并安装

  Gitosis 就是一套用来管理 authorized_keys文件和实现简单连接限制的脚本。简单地说,Gitosis就是git的权限策略控制器。  

  因为Gitosis源码安装方式通过python方式,所以这里要检测是否安装了python的setup tool,没有即安装此工具, 这个也是为了gitosis做准备:

  $ sudo apt-get install python-setuptools

  去到一个临时目录

  $ cd /tmp

  $ git clone https://github.com/res0nat0r/gitosis.git  // 下载Gitosis的源代码

  $ cd /tmp/gitosis

  $ sudo python setup.py install

7、windows下安装git bash

https://git-scm.com/download/win

系统会自动选择要安装的版本

8、生成SSH KEY

在windows客户端,进入git bash,输入

$ssh-keygen -t rsa

此时会在~/.ssh/下生成两个密钥id_rsa,id_rsa.pub

  id_rsa,私钥

  id_rsa.pub 公钥,这个要保存Git server上,作为访问Git server的权限。

9、初始化管理员,启动gitosis

通过命令在客户端上将公钥远程传输到线上

  $  scp ~/.ssh/id_rsa.pub git@server:/tmp

  此时在Git server的/tmp目录下应该就能看到这个公钥了。

  在Git server上操作如下:

  /tmp$ sudo chmod a+r ./id_rsa.pub  //先给这个公钥所有权限

  启动Gitosis命令,完成如下图:

  /tmp$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub

注意:这个命令要在root用户下执行,不能在git用户下面,而且Python的版本要更新(前面的步骤已经更新过),否则会报错,此处坑大!

成功截图:


权限控制在gitosis.conf,公钥SSH Key文件放在/home/git/repositories/gitosis-admin.git/gitosis-export/keydir下,以后所有的客户端用户的公钥都放在这个文件下

另外,给/home/git/repositories/gitosis-admin.git/hooks/post-update权限,如下:

$ sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

到此管理员初始化完成,Git Server配置完成

10、从git server上克隆版本

打开gitbash,

$ git clone git@192.168.10.49:gitosis-admin.git  //在本地f盘下可以看到gitosis-admin文件目录


clone完成!

11、测试系统

在Git server上新建一个版本库如下:

  $ su git

  $ mkdir /home/git/repositories/hello.git

  $ sudo chown -R git:git /home/git/repositories/hello.git

  $ cd /home/git/repositories/hello.git

  $ git --bare init   //初始化

  切换root用户操作

  cat /home/git/repositories/gitosis-admin.git/gitosis.conf

  新增访问版本hello的权限,编辑gitosis.conf文件,修改如下:  

  [gitosis]

  [group gitosis-admin]
  members = Administrator@CANDLE-PC
  writable = gitosis-admin

  [group developers]
  members = Administrator@CANDLE-PC
  writable = hello

  初始化完成hello版本库。然后通过windows客户端msysGit进行clone,并提交文件如下:

  git clone git@192.168.10.49:hello.git

  完成版本clone。

  测试提交文件,如下: 

  【第一次提交】 

  git add a.txt
  git commit -a -m 'add a.txt'  //第一次提交时,因为当前是一个空项目,commit后面跟一个参数-a,git commit -a 提交当前repos的所有的改变,否则会在git push origin master时报错
  git push origin master

  【第二次提交】commit不需要加参数-a

   git add a.txt

  git commit -m 'add a.txt'

  git push origin master

12、gitosis管理员添加用户

$cp/tmp/id_rsa.john.pubkeydir/john.pub //把用户John的公钥加入到keydir中

$ vigitosis-admin/gitosis.conf //编辑新加入用户的权限

[ group mobile ]
writable = iphone_project
members = scott john josie jessica

writable 表示有写的权限,给iphone_project这个项目添加写权限;scottjohnjosiejessica等用户拥有这个项目写的权限,中间以空格隔开


修改完成以后,记得提交,git push origin master


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值