CentOS下安装git服务器 centos+git+gitosis

花了两天的时间在自己的服务器上搭建成功了git服务器,下面详细介绍下CentOS下如何搭建git服务器。

步骤一、服务器端安装git

#首选需要安装git依赖包:
yum install curl
yum install curl-devel
yum install zlib-devel
yum install openssl-devel
yum install perl
yum install cpio
yum install expat-devel
yum install gettext-devel

#接着下载最新的git包(https://code.google.com/p/git-core/downloads/list)
wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz

#然后执行:
tar -xvf git-1.9.0.tar.gz
cd git-1.9.0/
./configure
make && make install

#这样就可以安装了,通过执行git –version来查看是否正确安装。

步骤二、服务器端安装gitosis

解释下gitosis,用户的公钥保存在authorized_keys文件中,gitosis项目是一套用来管理authorized_keys文件和实现简单连接限制的脚本,用来添加用户和设定权限的并非通过网页程序,而只是一个特殊的git仓库,你只需要在这个特殊仓库内做好相应的设定,然后推送到服务器上,gitosis就会随之改变策略。

#gitosis的工作依赖于一些python工具,linux下称之为pyhon-setuptools
yum install python python-setuptools
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install

步骤三、服务器端添加一个git用户

useradd git (回车)
passwd git(回车后输入密码)
这样就建立了一个git用户,可以通过su git命令进入git
新建的git用户可能需要: service sshd restart 这个命令来重启下sshd服务

步骤四、开发机器上安装git客户端(http://git-scm.com/download/win)

安装好后进入Git Bash
最好通过以下命令来初始化git,下面通过命令来初始化git,下面的信息将会永远的嵌入到你的提交中
git config –global user.name “John Doe”
git config –global user.email johndoe@example.com

步骤五、开发机器上生成密钥并上传到服务器上

ssh-keygen -t rsa (一直回车,默认就好)
cd c:/users/administrator/.ssh/
scp id_rsa.pub git@serverip:/home/git

步骤六、服务器端初始化gitosis

su git
cd /home/git
gitosis-init < 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/

#删除key
rm id_rsa.pub

#接下来我们需要设置下一些文件和目录的权限以便让sshd能够看到新的authorized_key文件
chmod 755 /home/git
chmod 700 /home/git/.ssh
chmod 644 /home/git/.ssh/authorized_keys

步骤七、个人开发机器上,通过客户端来配置服务器端

cd d:/mygit/
git clone git@serverip:gitosis-admin.git
cd gitosis-admin
vi gitosis.conf

#在文件尾增加以下内容
[group MyProject] #具有写权限的组名称
writable = MyProject #该组可写的项目名称
members = longdw@LONGDW-PC user1 user2 #该组的成员(密钥用户名)  多个用户协同开发时,以空格隔开

#如果要增加只读的组 只需要将writable 改成readonly就行了
#提交修改
git add .
git commit -a -m “add MyProject”
git push

步骤八、在开发机器上初始化并上传项目

cd MyProject/
git init
touch readme
git add .
git commit -a -m “init MyProject”
git remote add origin git@serverip:MyProject.git
git push -u origin master

步骤九、增加协同开发者的key到git服务器

#如果你的朋友bob想跟你一起开发MyProject项目,bob在他的机器上生成id_rsa.pub并发送给你,你拿到后:
cd gitosis-admin

#重命名pub文件
mv id_rsa.pub bob.pub
git add bob.pub

#修改gitosis.conf文件 在member后面加入bob注意和前面的成员用空格隔开
vi  gitosis.conf

git commit -a -m “Added commit rights to bob on MyProject”
git push

参考文章:
http://nfocipher.com/index.php?op=ViewArticle&articleId=12&blogId=1
https://github.com/jackliu2013/recipes/blob/master/doc/linux/CentOS_6.4_git%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA.md