chxbqudujk 发表于 2016-5-12 09:37:32

在centos 下安装配置基于gitosis 的git 服务

原文:http://blog.csdn.net/esinzhong/article/details/8018041
前言 这里我用的系统是centos 6.2,
在服务器上的准备工作(服务器IP为10.0.2.8 ):
1、安装 openssh服务器与客户端工具
 view plaincopy 



[*]$ sudo yum install openssh-server openssh-client  

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



[*]$ ssh-keygen -t rsa  

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



[*]ssh-keygen -t rsa -b 4096  

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


 
 
 
3、安装 git服务器
 
 view plaincopy 



[*]$  sudo yum install git-core  

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



[*]$  sudo useradd -m git   
[*]$  sudo passwd git  

  创建git仓库存储目录
 
 
 view plaincopy 



[*]$  sudo mkdir /home/git/repositories  

  设置git仓库权限
 
 
 view plaincopy 



[*]$  sudo chown git:git /home/git/repositories   
[*]$  sudo chmod 755 /home/git/repositories  

  
初始化全局设置
 
 
 view plaincopy 



[*]$  git config --global user.name "myname"   
[*]$  git config --global user.email "myname@server"  

  

5、安装python的setup tool 
 
 
 view plaincopy 



[*]$  sudo yum install python-setuptools  

  
6、获取并安装gitosis
 
 
 view plaincopy 



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

 
 
  7、配置gitosis
 
 view plaincopy 



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

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



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

  
 
8、管理gitosis配置
 
 view plaincopy 



[*]$ cd ~   
[*]$ git clone git@hostname:/gitosis-admin.git   
[*]$ cd gitosis-admin/  
[*]$ ls -al  

  看到以下结果

 

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



[*]$  more gitosis.conf  

  gitosis.conf 对应的内容
 view plaincopy 



[*]  
[*]  
[*]  
[*]writable = gitosis-admin  
[*]members = root@localhost.localdomain  

  
来这里git的服务已基本配置完毕,但要团队开发中用起来还要进以下配置:
 
在成员机(ip=10.0.2.100)上操上面第1与第2步生成自已的公匙,
 view plaincopy 



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

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



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

修改gitosis.conf
 view plaincopy 



[*]  
[*]  
[*]writable = gitosis-admin  
[*]members = root@localhost.localdomain  
[*]#加一个组myteam  
[*]  
[*]members = tester #这里的tester对上面公匙文件名  
[*]writable = test_project #项目仓库名  

提交到版本库
 view plaincopy 



[*]$ git add keydir/tester.pub  
[*]$ git commit -a -m "Allow tester write access to test_project"  
[*]$ git push origin master  

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



[*]$ cd ~  
[*]$ mkdir test_project  
[*]$ cd test_project  
[*]$ echo "testing ">test.txt  
[*]$ git init //初始化本地版本  
[*]$ git remote add origin git@10.0.2.8:test_project.git //加到远程版本库中  
[*]$ git add .  
[*]$ git commit -a -m "哈哈哈,测试一下"   
[*]$ git push origin master  

 
 
  换个目录看能否clone回来
 view plaincopy 



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

 
  最后大功告成...
页: [1]
查看完整版本: 在centos 下安装配置基于gitosis 的git 服务