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

来源:互联网 发布:软件开发团队管理制度 编辑:程序博客网 时间:2024/05/01 09:44

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

   $ sudo yum install openssh-server openssh-client 

2、创建个人公钥和私钥(用于后面的git服务的管理员管理)

在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥

     $ ssh-keygen -t rsa -C 'your email'

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

    $  ssh-keygen -t rsa -b 4096 

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



3、安装 git服务器

$  sudo yum install git-core 


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

$  sudo useradd -m git

$  sudo passwd git

 

创建git仓库存储目录

$  sudo mkdir /home/git/repositories   

设置git仓库权限

$  sudo chown git:git /home/git/repositories

$  sudo chmod 755 /home/git/repositories


初始化全局设置

$  git config --global user.name "myname" 

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


5、安装python的setup tool 

$  sudo yum install python-setuptools 


6、获取并安装gitosis

$  cd /tmp 

$  git clone git://eagain.net/gitosis.git //测试时从这拿不到,可换

成 git clone https://github.com/res0nat0r/gitosis.git

$  cd gitosis

python setup.py install 

7、配置gitosis

$  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操作时不用输入密码,还要做以下配置


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

chmod 600 /home/git/.ssh/authorized_key

8、管理gitosis配置

cd ~

git clone git@192.168.159.128:/gitosis-admin.git 

 注:访问git用户仓库的默认路径是/home/git/repositories/

Enter passphrase for key '/root/.ssh/id_rsa': 秘钥

cd gitosis-admin/  

ls -al 

看到以下结果



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

   more gitosis.conf

gitosis.conf 对应的内容

   [gitosis]
   [group gitosis-admin]
     writable = gitosis-admin
     members = xifengbao@qq.com
  


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

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

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

keydir中 

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

$  cd ~ 

$  cd gitosis-admin

$  cat keydir/testbao@qq.com.pub >> /home/git/.ssh/authorized_keys //将tester的公匙导入到git

目录的 authorized_keys文件中 

$ vi gitosis.conf 

修改gitosis.conf

[gitosis]

[group gitosis-admin]

writable = gitosis-admin 

members = root@localhost.localdomain 

#加一个组myteam

[group myteam]

members = baozhubin99@qq baozhubin100@qq #这里的keydir对上面公匙文件名

writable = test_project #项目仓库名 


提交到版本库

git add . 

$ git commit -a -m "Allow tester write access to test_project" 

$ git push origin master

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

$ 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   //  git push git@192.168.159.128:tests.git master 合并的写法

//fatal: 'tests.git' does not appear to be a git repository
fatal: Could not read from remote repository.  一般考虑是不是权限的问题,,,keydir 及authorized_keys 看看权限的问题


克隆成功



0 0
原创粉丝点击