Ubuntu 上git 服务的搭建记录

来源:互联网 发布:爆破手机号软件 编辑:程序博客网 时间:2024/05/17 03:13

一,远程服务器端的配置(server)

1 安装git与openssh

    sudo apt-get install git-core openssh-server openssh-client

 

2 添加git用户,并将该用户作为所有代码仓库和用户的权限管理者:

    sudo useradd -m git

    sudo passwd admin2012


3 建立一个git仓库的存储点,它的拥有者为git,权限为700

   sudo mkdir /home/repo

   sudo chown git:git /home/repo

   sudo chmod 700 /home/repo


4 安装配置gitosis

(1)初始化服务器的git用户

      git config --global user.name "myname"            (myname 替换成你的用户名)

      git config --global user.email "myname@server"   (myname@server 替换成你的邮箱)


(2) 安装gitosis

    1)安装python的setup tool

           sudo apt-get install python-setuptools      

   2)  获得gitosis 软件包(https://github.com/res0nat0r/gitosis.git)

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

          cd gitosis

          sudo python setup.py install

    3)  默认状态下gitosis会将git 仓库放在git用户的home下,所以做一个链接到/home/repo

          su git

          ln -s /home/repo /home/git/repositories


二 客户端机器上的配置(client)

    1 使用ssh-keygen 生成key

        ssh-keygen -t rsa

     2 把客户端的key远程复制到服务器上

        cat ~/.ssh/id_rsa.pub | ssh -i ~/.ssh/your_pemfile.pem ubuntu@your_ip_addr "cat>> /tmp"


三 在服务上再次配置gitosis(server)   

 1 初始化gitosis 

   sudo chmod a+r /tmp/id_dsa.pub

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

    sudo -s

    cd /home/git/repositories

    cd gitosis-admin.git/

    sudo chmod 755 /data/repo/gitosis-admin.git/hooks/post-update

    exit


四 创建测试项目 teamwork.git (server)

    su git

    cd /data/repo

    mkdir teamwor.git

    git init --bare

    exit


五 在客户端修改更新服务器上的gitosis的配置 (client)

   (1) git 权限管理本身是通过一个git仓库来管理的,把gitosis-admin.git克隆下来

     git clone git@<server>:gitosis-admin.git

    cd gitosis-admin

  (2) 把别的用户的用公钥添加进来 ,临时把pub文件放在~/temp下

     cp ~/temp/id_rsa.pub ./keydir/<user2@pc2>.pub

  (3) 修改权限配置

      vim gitosis.conf

----------------------------------------
[gitosis]
[groupgitosis-admin] 
writable = gitosis-admin
members = ubuntu@serveruser1@pc1 用户一
[group hello]  //分组
writable = teamwork  //操作仓库的权限
members =user1@pc1 user2@pc2 用户 

-------------------------------------------------


(4)更新提交到服务器

   在gitosis-admin目录下

     git add .

     git commit -a -m "add new user"

     git push origin master

     mkdir teamwork-ori

     cd teamwork-ori

     git init

     vim REAME

    git add .

    git commit -a -m "initial version"

     git remote add origin master

    注意:如果gitosis中的用户名和keydir里面的key名字没有完全对应上的话,可能会出现如下错误。

ERROR:gitosis.serve.main:Repositoryread access denied

fatal: The remote end hung up unexpectedly



原创粉丝点击