第二课:搭建企业私有Git服务.docx
课程概要:
- GIT远程通信协议详解
- 基于gogs 搭建WEB管理服务
一、GIT服务器搭建方式
上一节课我们讲过GIT是一个分布式版本管理系统,既然是分布那么必定会涉及远程通信,那么GIT是采用什么协议进行远程通信的呢?
git支持的四种通信协议:
- Local(本地协议)
- ssh
- http(Dumb、Smart)
- git
1、Local(本地协议)
基于本地文件系统或共享(NFS)文件系统进行访问,
优点:简单,直接使用了现有的文件权限和网络访问权限。
缺点:这种协议缺陷就是本身共享文件系统的局限,只能在局域网。
适应场景:小项目临时搭建版本服务。
l 演示本地协议使用方式:
# 从本地 f/git/atals 目录克隆项目
git clone /f/git/atals/
# 即使是 bare仓库也可以正常下载
git clone /f/git/atals.git
# 基于file 协议克隆本地项目
git clone file:///f/git/atals/
如果在 URL 开头明确的指定 file://,那么 Git 的行为会略有不同。 如果仅是指定路径,Git 会尝试直接复制所有需要的文件。 如果指定 file://,Git 会触发平时用于网路传输资料的进程,传输过来的是gc处理后打包好的文件,更节约硬盘空间。
git init --bare luban.git
git add -A;git commit -am'1 commit';git push
2、ssh 协议
git 支持支持利用ssh 协议进行通信,这是绝大部分linux、uninx系统都支持的,所以利用该协议架设GIT版本服务是非常方便的
优点:首先SSH 架设相对简单、其次通过 SSH 访问是安全的、另外SSH 协议很高效,在传输前也会尽量压缩数据。
缺点:权限体系不灵活,必须提供操作系统的帐户密码,哪怕是只需要读取版本。
适应场景:小团队、小项目、临时项目
l 演示基于 ssh 协议
这里我们把git 服务必须先安装到linux 系统上,然后才能使用ssh 协议跟git 服务进行通信。
l linux 安装git服务
# 1.安装依赖环境
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
# 2.下载并解压源码
$ wget https://github.com/git/git/archive/v2.3.0.zip
# 备用下载链接: https://pan.baidu.com/s/1czwEz8 密码: y3hn
$ unzip v2.3.0.zip
$ cd git-2.3.0
#3 编译 安装(如果没有权限就加上sudo)
make prefix=/usr/local/git all
make prefix=/usr/local/git install
#4、添加环境变量
vim /etc/profile
export PATH=/usr/local/git/bin:$PATH
source /etc/profile
#如果成功显示版本号表示添加成功
git --version
git version 2.3.0
l #创建一个祼项目
git --bare init luban.git
#本地基于远程克隆仓库
git clone root@192.168.0.147:/data/git-repository/luban.git
cd luban/
#添加文件
echo "this is luban" >> README.MF
# 本地添加、提交、并推送至远程
git add -A; git commit -am 'first commit'; git push;
可能的错误:
git-upload-pack: command not found
原因是 ssh 协议下只能访问/usr/bin 下的目录,解决办法如下
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
===============================
参考资料:
来源:https://www.cnblogs.com/MarlonKang/p/12317187.html