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


    前言 这里我用的系统是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  
    3.    

    8、管理gitosis配置

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

    看到以下结果



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

    如果无法git clone的话,可以使用git clone git@xxx:/home/git/repositories/gitosis-admin.git
     
    如果在git push的时候,遇到错误“ddress 192.168.0.77 maps to bogon, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!”,解决为修改/etc/hosts文件,将ip地址与主机名对应关系写进去就可以了。
     
    1. $  more gitosis.conf  

    gitosis.conf 对应的内容

    1. [gitosis]  
    2.   
    3. [group gitosis-admin]  
    4. writable = gitosis-admin  
    5. 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
  • 相关阅读:
    Java垃圾收集器概述
    redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
    Serialize a Long as a String
    数据库遇到的问题
    解决Safari页面缓存的问题
    idea -> Error during artifact deployment. See server log for details.
    正则表达式
    commons-lang
    Template和Style
    WPF资源
  • 原文地址:https://www.cnblogs.com/breg/p/3675294.html
Copyright © 2020-2023  润新知