阿里云下搭建Git服务器

环境配置

服务器:阿里云(云服务器ECS)、内存1G、带宽1M、CPU 1核。

本地:MacBook Pro

系统:Ubuntu

因为github上的私有库是收费的,所以搭一个自己的git服务器。也满足自己的动手欲……hh

安装Gitosis

gitosis主要用来Git仓库的权限管理,默认情况下git也是有权限管理的,但是不太好用,或者用起来比较复杂,所以选择了gitosis第三方的权限管理工具。使用Gitosis可以在GIt上面管理访问仓库的用户权限,允许某些用户访问指定的仓库,对指定的仓库拥有读写控制,gitosis 是基于git的管理方式,服务器安装好gitosis以后,超级管理员的客户端PC就 “git clone gitosis” 到本地,以后的工作,比如新仓库创建,权限管理都是在超级管理员的PC上进的,超级管理员的PC修改gitosis的配置后,需要把修改项提交到服务器端,这样其他的用户才有权限从服务器获取到源码进行Git管理,需要注意的是新仓库的创建,权限的管理务必不要直接在Git服务器上面进行修改,超级管理员的PC才具有这些功能。

  1. 获取并安装gitosis

    cd /home/workspace   
    git clone git://eagain.net/gitosis.git 
    //测试时从这拿不到,可换成 git clone https://github.com/res0nat0r/gitosis.git    
    cd gitosis   
    sudo python setup.py install  
    1. 注意:如果报错:ImportError:No module named Setuptools 说明python的安装包缺少setuptools包。
    2. 解决方法:sudo apt-get install python-setuptools

安装Git

  1. 在服务端和客户端安装git

    sudo apt-get install git
    sudo apt-get install git-core
  2. 配置 git服务器

    1. 创建git服务器管理用户:sudo useradd git
    2. 创建git仓库存储目录:sudo mkdir /home/workspace/git/
    3. 设置git仓库权限:

      //将该目录及其子目录设置为管理用户和用户组为git
      sudo chown -R git:git /home/workspace/git/
      //将该目录及其子目录设置为755权限(可参考鸟哥的私房菜)
      sudo chmod 755 /home/git/repositories 
    4. (服务器略过这步)如果在本地安装git,配置对当前用户配置用户信息

      git config --global user.name "Name"   
      git config --global user.email "Name@server"
    5. 复制客户端的ssh公钥到服务器上.建议放到tmp目录下,这样可以避免权限限制带来的问题。scp ~/.ssh/id_rsa.pub git@Server:/tmp
    6. 服务端初始化git server(必须在完成上面安装Gitosis这一步骤后再执行):

      sudo -H -u git gitosis-init < /tmp/id_rsa.pub
      会看到两行输出:
      Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
      Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

      这个步骤是给超级管理员的电脑授权,授权以后电脑B可以使用git clone命令下载gitosis-admin仓库,这个命令只需要在给超级管理员权限时使用,在增加其他的用户管理权限时,不需要这样做。

      修改一个文件的访问权限:sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

    7. 客户端:同步gitosis-admin到客户端开始管理git server
      git clone git@Server:gitosis-admin.git这样会在当前目录下fork一个gitosis-admin的目录。里面有一个配置文件gitosisi.conf和一个存放pub key的目录keydir。
    8. 建立新的库和授权用户

      1. 如果要新建库,编辑gitosisi.conf文件,添加

        [gitosis]
        [group gitosis-admin]
        writable = gitosis-admin
        members =  wsywno1@126.com
        [group gitosisTest]
        writable = gitosisTest
        members = wsywno1@126.com

        然后将修改后的内容pull到服务器上:git add -> git commit -> git push

      2. 新建gitosisTest库

        mkdir gitosisTest
        cd gitosisTest
        git init
        git add . 
        git commit  -a  -m "add new project"
      3. 建立本地与服务器关联

        git remote add origin git@Server:gitosisTest.git

      4. 提交本地代码

        git push origin master:refs/heads/master

        注意:这条命令在超级管理员的机器上面运行,将在服务器上面新创建一个仓库。
        至此新的库和对应文件已经上传到server端,其他用户可以git clone git@Server: gitosisTest.git

  3. 检测一下服务端有没有安装openssh

    1. 使用下面指令检查是否安装,我的系统带的有,如有则跳过。

      root@XXXXXXXXX:~# ps -e | grep ssh
        776 ?        00:00:02 sshd
      27157 ?        00:00:00 sshd
      28033 ?        00:00:00 sshd
    2. 如果没有安装,那么安装openssh服务器与客户端工具。

      sudo yum install openssh-server openssh-client
  4. 客户端连接服务端通过ssh登陆:ssh username@Server。在我服务器上username是root,Server是wsyw126.cc或者用服务器IP。
  5. 客户端必须的有ssh,默认Ubuntu都会安装的,大家可以看看22端口是否被监听.

安装GitWeb

如果想在本地版本库看看自己项目的效果,不妨用Git自带的一个命令,可以使用类似lighttpd这样轻量级的web服务器启动一个临时进程。

  1. 安装lightpd:

    sudo apt-get install lighttpd

  2. 启动服务:

    git instaweb

    这会在1234端口开启一个HTTPD 服务,随之在浏览器中显示该页,十分简单。

  3. 关闭服务时,只需在原来的命令后面加上-stop 选项就可以了:

    git instaweb –stop

  4. 结果如图:
    阿里云下搭建Git服务器_第1张图片

到这里就完成了git server的搭建。


参考资料:
Git官方文档
GitWeb官方文档
Gitosis相关资料
备注:
转载请注明出处:http://blog.csdn.net/wsyw126/article/details/52136345
作者:WSYW126

你可能感兴趣的:(Git)