centos 编译安装git-2.9.3

一、git-2.9.3下载:

https://www.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz
(注:最新版本 git-2.12.2

二、解压安装

tar zvxf git-2.9.3.tar.gz # 解压
cd git-2.9.3 #打开
./configure --prefix=/usr/local/git # 默认会安装在 /usr/local/bin,/usr/local/lib
make
make install #安装完成

#目录
ln -s /usr/local/git/bin/git /usr/bin/git

# 查看版本
git --version 

如果报错如下:

Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] 错误 2
make: *** [perl/perl.mak] 错误 2 

则需要安装以下2个软件:

yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker 

三、搭建本地git服务器

在服务器做如下操作:

groupadd git; #添加git用户组
useradd -g git git -s /bin/false #添加git用户

cd /home/git # 打开git用户目录
git init --bare sample.git #在当前目录建git空仓库sample.git
chown -R git:git sample.git #更改仓库目录权限,这步不能忘记

mkdir /home/git/.ssh; #创建.ssh目录
touch .ssh/authorized_keys #创建authorized_keys 文件,用来存储git客户端用户的公钥
cat /home/git/id_rsa.pub >> .ssh/authorized_keys # 将从客户端上传来的公钥文件导入到authorized_keys中 

服务器操作完成后,就可在客户端远程克隆空仓库

git clone git@192.168.1.241:/home/git/sample.git #远程克隆仓库

四、GIT服务器实现web代码自动部署

**1、git机制简要介绍 **
git使用的是代码仓库,git服务端有仓库,称为远端仓库,我们clone下来的,本地也有一个仓库称为本地仓库。我们commit的时候是把代码提交到了本地仓库,push时是把代码提交到了远端仓库,pull的时候是把代码从远端仓库下载到本地仓库。
代码仓库对代码的存储使用了版本指针,每个提交的版本都对应一个HEAD指针,当前版本指针随着代码的提交一直改变。

2、自动部署原理
说说现在代码的分布情况,开发者电脑上的本地仓库,git服务器上的远端仓库,web服务器上的另一个本地仓库,我们浏览器访问的就是这里的代码。

要实现自动部署,就是要当开发者从本地仓库提交代码到远端仓库的时候,自动把代码部署到web服务器的本地仓库,实现开发者本地仓库和web服务器的本地仓库的同步。

3、实现自动部署
按照上面说的,就是要在开发者提交的时候,自动触发脚本,脚本去实现web端代码的部署。
这里就得讲一下git的hook机制,当git服务器接到各种事件时触发,这里使用的hook是post-receive,这个hook在git服务器受到push请求,并且接受完代码提交时触发。

具体代码体现:
在git远端仓库的hooks目录下新建post-receive文件:

#!/bin/sh   
#author: embbnux  
#Blog of Embbnux: http://www.embbnux.com   
#判断是不是远端仓库  
IS_BARE=$(git rev-parse --is-bare-repository)  
if [ -z "$IS_BARE" ]; then  
echo >&2 "fatal: post-receive: IS_NOT_BARE"  
exit 1  
fi   
unset GIT_DIR  
DeployPath="/var/web"  
   
echo "==============================================="  
cd $DeployPath  
echo "deploying the test web"  
   
#git stash  
#git pull origin master  
git fetch --all  
git reset --hard origin/master  
   
time=`date`  
echo "web server pull at webserver at time: $time."  
echo "================================================"  

保存后赋予可执行权限:

chmod +x hooks /post-receive

这样在开发者提交代码的时候,就会自动部署。

在这里补充说明下: 因为我建立git仓库时用的是git用户 但是在自动部署时站点服务器采用的是nginx服务器的 git用户属于git组 nginx属于nginx组 所以在这里就是把post-receive设置成nginx组 如果不设置的话在站点目录下是没有办法更新文件的(会提示没有权限操作)


自动部署的时候,我这里使用的是git fetch,也可以使用git pull实现,这里两个的区别主要是pull事先fetch后然后再用merge,来合并本地和远端的代码。但是有个问题,如果开发者在提交过程出现失误,使用git reset复位后,现在远端的代码版本低于web端的代码版本,再使用pull的时候就不能实现和开发者本地的代码的同步。所以这里使用fetch后,在强制使用reset实现web端的代码版本指针和git服务端的一致。由于没有使用merge,所以以后web端的代码就不能在服务器上直接更改了,对web端代码的各种改变都应该使用开发者电脑进行代码提交,不然会报错。

参考资料:
Git教程 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
GIT服务器实现web代码自动部署 http://blog.csdn.net/hsany330/article/details/49888447

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,576评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,515评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,017评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,626评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,625评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,255评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,825评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,729评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,271评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,363评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,498评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,183评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,867评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,338评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,458评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,906评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,507评论 2 359

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,699评论 18 139
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,717评论 1 17
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,414评论 7 249
  • 全部考完了,放假了,可是,我怎么感觉,那么无聊呢。
    五月sn阅读 283评论 0 0
  • 1 转眼间,我也到了谈恋爱嫌晚,碰瓷嫌早的尴尬年龄。 我有一个朋友,今年三十,家里人一直催他结婚。他妈苦口婆心地跟...
    强强说阅读 612评论 0 0