ZYaller

阿里云Linux centos6.5系统下搭建Git服务器

Published in 2015/8/7 13:02. 3395 Crowd. 0 Slot

早之前跟大学好友商量着准备搞一个聚会为主题的项目,上个月首先开始讨论了APP的原型。API接口开发主要由我开发。在基本原型确定好了后,大伙开始进入DEMO的开发。我这边也开搭建API开发框架,发了几天在网上查找巡阅相关资料,最终也算确定了。

由于是协同开发,自然少不了代码版本控制,鉴于Git分布式版本控制系统的主流趋势和它的高大上,我们也确定使用它。话说来其实早先做开发用的还是SVN,也用了不短的时间,导致后面接触到Git的时候,还真的有点不上手和不习惯。但Git之所以能火,肯定有它的好处。

这里Git的相关理论知识就不再介绍,其实我在刚搭建Git之前也完全是个小白。觉得凡事要多动手,更何况像我这样苦逼的码农还要充当运维。不过知识学多点总是有用的。好了不多说了,进入本篇文章主题。

首先说明我是在阿里云的Linux Centos6.5的系统(IP:121.54.2.24)上搭建Git的,至于系统配置就不用说了,自己开发的当然是最低配置了。但Git服务对系统的消耗并不大,这点倒可以放心。接下来会比较多命令行,我会尽可能详细一步步来讲解,但可能还是会有遗漏或错误的,如果是欢迎评论指点。

1、root登录Linux系统,

切换到用户默认目录

su root
[root@localhost ~]$ cd ~


2、执行以下命令安装git环境

[root@localhost ~]$ sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel git


3、输入git --version 查看git是否安装好

[root@localhost ~]$ git --version


4、创建Git专用用户组和用户名

添加git组

[root@localhost ~]$ groupadd gitgroup


创建git主目录

[root@localhost ~]$ mkdir /git


创建git用户

[root@localhost ~]$ useradd -d /git -g gitgroup -m git

#-d /git的意思是将git用户的主目录指定为/git,-g gitgroup的意思是设置gitgroup为git这个用户所在用户组


为git创建密码

[root@localhost ~]$ passwd git


修改git用户主目录权限

[root@localhost ~]$ chown - R git:gitgroup /git


切换到git用户,创建ssh密钥

[root@localhost ~]$ su git
[git@localhost ~]$ cd ~
[git@localhost ~]$ ssh-keygen -t rsa

#默认情况下,公钥和私钥会保存在~/.ssh目录下,有这些文件:id_rsa  id_rsa.pub  known_hosts


将公钥拷贝到/tmp文件夹下

[git@localhost ~]$ cp .ssh/id_rsa.pub /tmp/git.pub


5、安装gitosis管理工具

安装gitosis运行环境

[git@localhost ~]$ su root
[root@localhost ~]$ cd ~
[root@localhost ~]$ yum install python python-setuptools


下载gitosis并安装

[root@localhost ~]$ cd /tmp
[root@localhost tmp]$ git clone git://github.com/res0nat0r/gitosis.git
[root@localhost gitosis]$ cd gitosis
[root@localhost gitosis]$ python setup.py install

#显示Finished processing dependencies for gitosis==0.2即表示成功


初始化gitosis

[root@localhost ~]$ su git
[root@localhost ~]$ cd ~
[git@localhost ~]$ gitosis-init < /tmp/git.pub
[git@localhost ~]$ chmod 755 /git/repositories/gitosis-admin.git/hooks/post-update


删除authorized_keys中除了gitosis生成key之外的key

[git@localhost ~]$ vi ~/.ssh/authorized_keys

#如果有###文字,这个是gitosis生成的,不要去删除。删掉其他的sshkey就行了,不然会造成gitosis无法使用


6、Git客户端生成并上传的sshkey公共密钥

如果之前没生成过密钥,需要通过git-bash生成,运行git-bash,输入命令生成

ssh-keygen -t rsa

生成的密钥默认保存在~/.ssh/目录下,有id_rsa  id_rsa.pub  known_hosts三个文件

git-bash定位到pub文件所在位置,然后使用这个命令

scp tangpeng.pub git@121.54.2.24:/tmp

将客户端的公钥传到服务器上。(注意,我有git用户的密码,可以使用这个账户上传客户端的公钥。如果有root的密码,也可以使用root账户上传)


7、配置服务器上的gitosis

配置gitosis

[git@localhost ~]$ git clone git@121.54.2.24:gitosis-admin.git
[git@localhost ~]$ cd gitosis-admin/


添加windows客户端的公钥

[git@localhost gitosis-admin]$ cp /tmp/tangpeng.pub keydir/


8、添加Git项目

[git@localhost gitosis-admin]$ vi gitosis.conf
[gitosis]
[group gitosis-admin]    
   writable = gitosis-admin
   members = a@server1
[group developers]
   writable = helloworld
   members = tangpeng

#保存并同步项目

[git@localhost gitosis-admin]$ git add.
[git@localhost gitosis-admin]$ git commit -am "添加helloworld项目,授权该项目为tangpeng使用"
[git@localhost gitosis-admin]$ git remote add origin git@121.54.2.24/gitosis-admin.git
[git@localhost gitosis-admin]$ git push origin master


9、服务端初始化新Git项目

切换到Git项目目录,新建新项目,然后用--bare方式初始化项目

[git@localhost gitosis-admin]$ cd ~/repositories/
[git@localhost repositories]$ mkdir helloworld.git
[git@localhost repositories]$ cd ~/helloworld.git/
[git@localhost helloworld.git]$ git --bare init

编辑git配置文件,解决第一次push报错的问题

[git@localhost helloworld.git]$ vi .git/config
[receive]
      denyCurrentBranch = ignore

#在末尾添加上面两行代码,然后保存退出


10、Git客户端克隆Git项目

在客户端克隆项目有多种方式,可以通过git-bash图形化的git客户端,例如sourceTree。

打开sourceTree,新建克隆仓库,在地址栏输入:git@121.54.2.24:helloworld.git,新建个文件夹设为目的就可以克隆刚新建的项目了。

参考资料:

http://www.51hei.com/bbs/dpj-28077-1.html

-
畅言评论
最新发布
热门推荐
随机阅读
热门标签