大伙牛逼哄哄的上项目,轮到开源了又有些羞赧,于是需要一个私有git服务器,享受分布式开发的便利同时,还能保护源代码。

##安装
服务器环境使用ubuntu 14.04,安装git和gitolite

sudo apt-get install git gitolite

然后生成一个专门用来跑git服务的账户:git

sudo adduser --system --group --shell /bin/bash --disabled-password git

这里使用–disabled-password 禁止了git账户远程登陆shell以及由此引发的安全隐患,个人感觉比其他教程上看到的随后再禁止shell要优雅。

客户端此时可以操作了。注意客户端有两种:管理员客户端和一般用户客户端。这里要用的是管理员客户端,用来配置gitolite。

在客户端,需要存在rsa的公开秘匙,存在于~/.ssh/id_rsa.pub文件中。如果没有,需要自行生成

ssh-keygen -t rsa -C "user@postname"

注意因为密匙对机器名的敏感性,第二个参数 -C 一定不可以少,否则会出现Permission denied(publickey)报错

假设这个服务器端的用户名为david,复制客户端公开秘匙到服务器端作为gitolite管理员秘匙

scp ~/.ssh/id_rsa.pub david@git_server_IP_address:/tmp/git-admin.pub

回到服务器端,执行如下命令:

sudo su - git
gl-setup /tmp/git-admin.pub

该客户端克隆管理包

git clone git@git_server_IP_address:gitolite-admin

至此,几乎所有关于gitolite的配置都可以在本地进行,之后只需像所有git项目一样提交,服务器端会自动根据配置文件进行更新。之所以说几乎,因为无法完全删除一个已经创建的repository。

##添加项目
修改git-admin/conf/gitolite.conf文件,例如希望添加一个名为WebSrv的repository给所有人,添加如下内容到文件中:

repo WebSrv
	RW+	=	@all

提交后WebSrv项目会自动生成

##添加用户
将用户的~/.ssh/id_rca.pub基于其用户名(例如devy)复制到git-admin/keydir/devy.pub,提交后用户就可以下载刚才生成的repository

git clone git@git-server-IP-address:WebSrv

##补充:非管理员客户端自定义
例如上面的devy用户,在项目文件夹中要自行配置用户名和电子邮件,可以使用如下命令

git config --global user.name "devy"
git config --global user.email "devy@email.com"

这两个命令是通用git命令,非gitolite环境下也可以使用

以上。

##补充2:替代选择
后来发现还有一种选择:gitlab,一个完整的平台,完全仿照github的功能,可以在网页端很酷的展示动态。适合有必要让用户参与开发过程的项目,以及懒人。官网就有安装教程,滋不重复。

##补充3:版本更新
时至今日,最新版本为gitolite3,相应的安装命令和初始化命令都做了修改
安装

sudo apt-get install gitolite3

初始化

gitolite setup -a /tmp/git-admin.pub

注意,我在安装gitolite的过程中,会有一步要求指出rsa公匙位置,对于全新系统来说,这时的安装是不完整的。
所以在这个版本中,正确的安装顺序应当是首先创建git帐户

sudo adduser --system --group --shell /bin/bash --disabled-password git  

然后登陆该账户

sudo su - git  

再设置rsa公匙

ssh-keygen -t rsa -C "git@postname"  

然后安装gitolite。
当然,如果错过了这几步也有补救措施

sudo dpkg-reconfigure gitolite3  

事实证明,这一步不可省略,即使顺序安装了也要执行,从而设定正常的repositories文件夹,以及authorized_keys文件(默认路径是/var/lib/gitolite3/.ssh/authorized_keys)
在Debian系统性,repositories会在dpkg-reconfigure gitolite3命令执行后自动创建,在Ubuntu下则不会,需要登录到git账户后执行

gitolite setup -a git  

然后就是在这个authorized_keys文件中操作了
例如我要添加tom@debian9工作站,只需将其自身的rsa公匙和相关命令加入此文件,就可以clone出gitolite-admin项目。
之后如果要创建新项目,直接修改gitolite-admin项目下conf/gitolite.conf文件,然后clone出空文件夹,自行演化即可



Published

13 January 2015

Category

lessons

Tags