CentOS下的Git服务器

【Gitosis】CentOS下的Git服务器:Gitosis                                            

 【摘要】
        详细介绍如何在CentOS上配置Gitosis        我们很多人知道Git可能是从Github开始的。因为Github是如此流行,几乎所有写代码的人都知道它,以至于一提到Git就以为是Github,其实两者并没有多少关系,只是名字类似而已(这有点像Java和JavaScript)。
图片 
      实际上,Git是一个分布式版本控制软件,原来是Linux内核开发者Linus Torvalds为了更好地管理Linux内核开发而创立的。虽然Git比SVN优秀很多,但它们最初被设计出来的想法是一致的,那就是版本控制。而Github却是一个网站,充当Git公共服务器的作用,只要拥有Github账号的人都可以把自己的项目托管在那里,如果你舍不得花些钱,你的项目是强制公开的。所以,Github就是一个通过Git协议为众多开发者提供代码托管的地方,同时它提供了很多特性,第一次使得大家可以这么公开地讨论起各自的项目。 
图片
     上面之所以说这么多,是因为今天要讲的Gitosis有点类似Github的功能。什么意思呢?就是我们可以在自己的服务器上安装Gitosis,那么这台服务器就可以向Github一样对外提供代码托管服务了,这对于很多不愿意把自己的代码公诸于世的公司来说最好不过了。
     这里以CentOS充当服务器为例给大家讲解一下Gitosis的安装和配置。同时,你还需要另外一台PC,当然Linux、Mac主机也是可以的。之所以要两台机器,是因为一台做服务器,另外一台充当客户端。甚至,你可以将所有下面讲的在同一台机器上完成。
     【服务端】Gitosis是用Python编写的,所以,在初始化一些环境的时候,要特别注意。通过下面的命令安装所有需要的软件。 
yum install -python python-setuptools git-core
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install
      【客户端】软件安装完之后就是做必要的配置。所以,需要在你进行开发的客户端生成ssh公钥来初始化gitosis。注:为了管理方便,我同时把这台CentOS当做服务器和客户端,PC端我会用PC字样标明。因为有一台外网能够访问的服务器可以很方便的管理公钥。如果你把gitosis-admin项目在家里的电脑上管理,一旦你离开家就没办法增加新项目或者添加新用户了。
ssh-keygen -rsa
scp ~/.ssh/id_rsa.pub root@xxx:/tmp/
      【服务端】下面就利用刚才上传的公钥初始化gitosis
#个git
useradd -git
su git
gitosis-init</tmp/id_rsa.pub
      这样会在/home/git下面生成gitosisrepositories两个目录,后者即为存放公共库的目录。确保/home/git/repositories/gitosis-admin.git/hooks/post-update具有执行权限(755)     【客户端】下面需要在开发机克隆gitosis-admin.git项目,它是用来管理所有git项目及用户的。 
git clone git@localhost:gitosis-admin.git #用localhost
      【客户端】为什么这里可以直接通过clone命令克隆项目,就是因为gitosis-init初始化的时候使用了客户端生成的公钥。在gitosis-admin项目下有一个gitosis.conf文件和一个keydir目录。gitosis.conf用来配置git项目和用户,keydir存放用户的公钥,这里的公钥对命名有严格要求,要是 用户名.pub,必须以.pub后缀结尾。       gitosis.conf的格式如下:
[gitosis]
 
[group gitosis-admin]
writable = gitosis-admin
members = username #应keydir个 username.pub 
     【客户端】现在可以按照这个格式增加新的项目。
[gitosis]
 
[group gitosis-admin]
writable = gitosis-admin
members = username #应keydir个 username.pub 
[group new-project]
writable = new-project
members = newuser #
      在PC端,同样用ssh-keygen命令生成公钥和私钥,并把公钥上传到keydir目录下,重命名为newuser.pub,更新gigosis-admin项目。
#在CentOS的gitosis-admin
git add .
git commit --"add newuser"
git push
      完成之后,服务器就已经做好了接受新项目的准备。这个时候服务器端还不会生成new-project.git项目,等PC端push之后会自动生成。
    【客户端】在PC端执行下面的命令。
#便
 
mkdir new-project
cd new-project
git init
git add .
git commit --"initial new-project"
    【客户端】新建项目之后需要把本地的这个库和服务器上配置的new-project关联起来,执行下面的命令可以完成这个任务,而且gitosis会自动在服务器上生成new-project.git项目。
git remote add origin git@xxx:new-project.git
git push origin master
      这样,本地的项目就和服务器上的项目实现了关联,意味着你拥有了一台自己的git server,你完全可以在别的电脑上克隆刚才添加的new-project.git项目了,也可以随意添加新的用户,记住要用空格隔开,还要上传公钥到keydir目录下并update gitosis-admin项目。        本文转载于: http://my.oschina.net/csensix/blog/184426
posted @ 2017-02-06 15:47  Yeah,程序猿  阅读(183)  评论(0编辑  收藏  举报