前言 这里我用的系统是centos 6.2,

在服务器上的准备工作(服务器IP为10.0.2.8 ):
1、安装 openssh服务器与客户端工具

  1. $ sudo yum install openssh-server openssh-client

2、创建个人公钥和私钥(用于后面的git服务的管理员管理)
在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥

  1. $ ssh-keygen -t rsa

默认生成2048位,如果需要提高安全级别,也可以通过下面的命令创建公钥和私钥

  1. ssh-keygen -t rsa -b 4096

默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示:

3、安装 git服务器

  1. $  sudo yum install git-core

4、配置 git服务器
创建git服务器管理用户

  1. $  sudo useradd -m git
  2. $  sudo passwd git

创建git仓库存储目录

  1. $  sudo mkdir /home/git/repositories

设置git仓库权限

  1. $  sudo chown git:git /home/git/repositories
  2. $  sudo chmod 755 /home/git/repositories

初始化全局设置

  1. $  git config --global user.name "myname"
  2. $  git config --global user.email "myname@server"

5、安装python的setup tool

  1. $  sudo yum install python-setuptools

6、获取并安装gitosis

  1. $  cd /tmp
  2. $  git clone git://eagain.net/gitosis.git //测试时从这拿不到,可换成 git clone https://github.com/res0nat0r/gitosis.git
  3. $  cd gitosis
  4. $  sudo python setup.py install

7、配置gitosis

  1. $  cp ~/.ssh/id_rsa.pub /tmp //上面第2步生成的公匙
  2. $  sudo -H -u git gitosis-init < /tmp/id_rsa.pub //将该公匙导入gitosis里,这时本机已经有了为git的管理权限了
  3. $  sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

为了git操作时不用输入密码,还要做以下配置

  1. $  cat /tmp/id_dsa.pub >> /home/git/.ssh/authorized_keys //将root的公匙导入到git目录的 authorized_keys文件中
  2. $  chmod 600 /home/git/.ssh/authorized_keys

8、管理gitosis配置

  1. $ cd ~
  2. $ git clone git@hostname:/gitosis-admin.git
  3. $ cd gitosis-admin/
  4. $ ls -al

看到以下结果

gitosis.conf是git仓库与权限配文件,keydir目录是存放其它客户机的公匙目录。

  1. $  more gitosis.conf

gitosis.conf 对应的内容

  1. [gitosis]
  2. [group gitosis-admin]
  3. writable = gitosis-admin
  4. members = root@localhost.localdomain

来这里git的服务已基本配置完毕,但要团队开发中用起来还要进以下配置:

在成员机(ip=10.0.2.100)上操上面第1与第2步生成自已的公匙,

  1. $  scp .ssh/id_rsa.pub root@10.0.2.8:~/gitosis-admin/keydir/tester.pub //将本机的公匙copy到gitosis的keydir中

再切换到git服务上(ip=10.0.2.8)

  1. $  cd ~
  2. $  cd gitosis-admin
  3. $  cat keydir/tester.pub >> /home/git/.ssh/authorized_keys //将tester的公匙导入到git目录的 authorized_keys文件中
  4. $ vi gitosis.conf

修改gitosis.conf

  1. [gitosis]
  2. [group gitosis-admin]
  3. writable = gitosis-admin
  4. members = root@localhost.localdomain
  5. #加一个组myteam
  6. [group myteam]
  7. members = tester #这里的tester对上面公匙文件名
  8. writable = test_project #项目仓库名

提交到版本库

  1. $ git add keydir/tester.pub
  2. $ git commit -a -m "Allow tester write access to test_project"
  3. $ git push origin master

这时tester便有权限操作test_project仓库了,回到成员机(ip=10.0.2.100)上

  1. $ cd ~
  2. $ mkdir test_project
  3. $ cd test_project
  4. $ echo "testing ">test.txt
  5. $ git init //初始化本地版本
  6. $ git remote add origin git@10.0.2.8:test_project.git //加到远程版本库中
  7. $ git add .
  8. $ git commit -a -m "哈哈哈,测试一下"
  9. $ git push origin master

也可以把上面的两步合成一步

$ git push git@xxx:project1.git master

说明:如果在执行 git push origin master 的时候,提示以下错误: error: src refspec master does not match any. error: failed to push some refs to 'git@192.168.0.77:pro2.git' 这是由于项目为空的原因,我们在项目目录里新创建一个文件。经过->add -> commit -> push 就可以解决了

$ touch a.txt
$ git add a.txt
$ git commit -a -m 'add a.txt'
$ git push

换个目录看能否clone回来

  1. $ cd /tmp
  2. $ git clone git@10.0.2.8:test_project.git //此时应该不会提示输入ssh密码的

error: cannot run ssh: No such file or directory - cygwin git

”错误,则表示本机没有安装ssh命令。安装方法请参考:http://blog.haohtml.com/archives/13313 有时候我们要更换电脑来重新开发项目。这个时候,只需要将id_rsa私钥放在home目录里的.ssh目录里就可以了。(有时候一个人开发多个项目,这时候可能会提示id_rsa文件已经存在。不太清楚这里如何解决???)

常见问题

首先确定 /home/git/repositories/gitosis-admin.git/hooks/post-update 为可执行即属性为 0755

1. git操作需要输入密码

原因
公密未找到
解决
上传id_rsa.pub到keydir并改为'gitosis帐号.pub'形式,如miao.pub。扩展名.pub不可省略

2. ERROR:gitosis.serve.main:Repository read access denied

原因
gitosis.conf中的members与keydir中的用户名不一致,如gitosis中的members = foo@bar,但keydir中的公密名却叫foo.pub
解决
使keydir的名称与gitosis中members所指的名称一致。 改为members = foo 或 公密名称改为foo@bar.pub

在centos 下安装配置基于gitosis 的git 服务的更多相关文章

  1. Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)

    Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)   关于LAMP的各种知识,还请大家自行百度谷歌,在这里就不详细的介绍了,今天主要是介绍一下在Centos下安装,搭建一 ...

  2. 阿里云服务器centos下安装配置svn服务器

      阿里云服务器centos下安装配置svn服务器 1.安装svn服务器端yum install subversion      从镜像下载安装svn服务器端中间会提示是否ok,输入y,确认安装成功提 ...

  3. CentOS下安装配置Cacti

    cacti简介 随着公司规模扩大,服务器也日渐增多,对服务器集群的网络流量和服务器性能实时监测显得愈发重要.开源阵营中常用有MRTG(MultiRouter Traffic Grapher)--基于S ...

  4. 在CentOS下安装配置MySQL(转)

    今天刚把项目做完,需要马上部署到新到的测试服务器上,于是乎,要在服务器上安装环境,由于好久在linux上部署了,手有些生,比较费劲装完,现在把重要步骤贴出,供自己以后参照.1.首先要看看有没有已经安装 ...

  5. linux、centos下安装配置vim

    ---恢复内容开始--- 1.一般情况下安装上centos后,会有vi,没有vim(以后可能会有吧) 如果不确定自己有没有vim,使用命令 rpm -qa|grep vim 查看,如果有的话,会显示三 ...

  6. centos下安装&&配置redis

    一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...

  7. CentOS下安装配置Samba服务器

    0 环境介绍 VMWARE12下安装的CENTOS7虚拟机.宿主机为WIN7. 1 离线安装 费了九牛二虎之力,下载各种依赖,还是有问题,转向在线安装. 2 在线安装 虚拟机采用默认的配置: 其次,网 ...

  8. Centos下安装JDK、Maven和Git

    原文地址:https://github.com/eacdy/spring-cloud-book/blob/master/3%20%E4%BD%BF%E7%94%A8Docker%E6%9E%84%E5 ...

  9. CentOS下安装配置SVN服务器并自动同步到web目录

    一.安装 yum install subversion测试是否安装成功 /usr/bin/svnserve --version如提示以下内容,说明已安装成功 svnserve,版本 1.6.11 (r ...

随机推荐

  1. Linux fork exec等

    http://www.cnblogs.com/leoo2sk/archive/2009/12/11/talk-about-fork-in-linux.html http://www.cnblogs.c ...

  2. call()方法和apply()方法用法总结

    1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法. 2. 相同点:这两个方法的作用是一样的. 都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖 ...

  3. 学习动态性能表(2)--v$sesstat

    学习动态性能表 第二篇--v$sesstat  2007.5.25 按照OracleOnlineBook中的描述,v$sesstat存储session从login到logout的详细资源使用统计. 类 ...

  4. C#中Cache的使用

    公共方法Add 将指定项添加到 Cache 对象,该对象具有依赖项.过期和优先级策略以及一个委托(可用于在从 Cache 移除插入项时通知应用程序). Equals(从 Object 继承) 已重载. ...

  5. Aix之 xmanager 2.0连接AIX服务器

    xmanager连接AIX服务器可以分为两种情况:1.连接IBM服务器,使用远程桌面功能进行系统维护.要求这台服务器已经安装了图形桌面,如CDE等,并启动到图形界面.在xmanager中的Xbrows ...

  6. Ununto16.04版本Docker的安装2018年最新版本

    最近参照网上教程安装ubuntu的Docker怎么都不成功,我最后参照官方文档成功安装 https://docs.docker.com/engine/installation/linux/docker ...

  7. tensorflow学习笔记(三十九):双向rnn

    tensorflow 双向 rnn 如何在tensorflow中实现双向rnn 单层双向rnn 单层双向rnn (cs224d) tensorflow中已经提供了双向rnn的接口,它就是tf.nn.b ...

  8. JUnit测试,获取Spring MVC环境

    @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(locations = { &qu ...

  9. Linux 中断下半部

    为什么使用中断下半部? 中断执行的原则是要以最快的速度执行完,而且期间不能延时和休眠! 可是现实中,中断中可能没办法很快的处理完需要做的事,或者必须用到延时和休眠,因此引入了中断下半部. 中断中处理紧 ...

  10. composer的安装和使用 学习日志

    如果你做为一个phper,没有用过composer,那你真的不是一个合格的开发者.那么就来记录一下composer的学习日志 下面分享几个学习源头: composer中文网站:https://www. ...