linux分布式运维,Linux高级运维(十一)-搭建GIT分布式版本...

Operatioon 008 版本控制,Git基础, Git进阶,RPM打包

一 分布式版本控制系统

1 典型的C/S系统

2 任意数量客户端

3 客户端通过写数据库分享代码

集中式版本控制系统 ->SVN,CVS

1开发者之间共用一个仓库

2所有操作需要联网

分布式版本控制系统 ->GIT,Bitkeeper(收费)

每个开发者都是一个仓库的完整克隆,每个人都是服务器

支持断网操作

****************************************************************** 分支可以合并

二 分布式版本控制系统(主流)

GIT基本概念

Git仓库:保存所有数据的地方

工作区:从仓库中提取出的文件

暂存区:就是一个文件,保存了下次将要提交的文件列表信息

三 Git工作流程

20190820190729761.png

一 GIT基础 ->安装部署GIT服务

1安装GIT

Yum -y install git

Git --version

2创建服务器版本仓库

->init可以初始化一个空仓库

Git init /var/git --bare

Ls /var/git

3 客户端访问

本地访问:Git clone file:///var/git

远程访问:git clone root@192.168.1.10:/var/git

Web访问:

1)服务端需要额外配置web服务器

2)客户端可以浏览器访问

3)Git clone http://服务器IP/Git仓库

二  客户端GIT命令工具

1 Git 支持的子命令

Clone ->将远程服务器仓库克隆到本地

Config ->修改git 配置

Add   ->提交到暂存区

Commit ->提交到本地仓库

Push  ->提交到远程服务器

Log ->查看历史日志

Config ->修改git配置

Add ->提交到本地暂存区

Commit ->提交到本地仓库

Status -->查看当前分支

Push -> 提交到远程仓库

Pull ->从远程下载

Log ->查看历史日志

Relog

Branch ->创建分支

Checkout ->切换分支

Merge ->合并分支

三 GIT HEAD 指针

1简介

HEAD指针是一个可以再任何分支和版本移动的指针

通过移动指针我们可以将数据还原到任何版本

2 Git 分支

20190820190745545.png

分支可以让开发多条直线同时进行,每条主线互不印象

按功能模块分支,版本分支

分支可以合并

MASTER分支(MASTER是主分支,是代码的核心)

DEVELOP分支(DEVELOP最新开发成果的分支)

RELEASE分支(为发布新产品设置的分支)

HOTFIX分支(为了修复软件BUG缺陷的分支)

FEATURE分支(为开发新功能设置的分支)

四 GIT 服务器

Git支持很多服务器协议形式,不同协议的Git服务器,客户端就可以使用不同的形式访问服务器。

创建的服务器协议有SSH协议、Git协议、HTTP协议。

1  SSH 协议

密码认证登录:

服务器安装GIT

使用git命令初始化版本仓库

客户端使用ssh远程访问

SSH协议服务器(支持读写操作)

1)创建基于密码验证的SSH协议服务器(web1主机操作)。

[root@web1 ~]# git init --bare /var/git/base_ssh

Initialized empty Git repository in /var/git/base_ssh/

2)客户端访问的方式(web2主机操作)。

[root@web2 ~]# git clone root@192.168.2.100:/var/git/base_ssh

[root@web2 ~]# rm -rf base_ssh

3)客户端生成SSH密钥,实现免密码登陆git服务器(web2主机操作)。

[root@web2 ~]# ssh-keygen -f /root/.ssh/id_rsa -N ‘’  ->客户端生成ssh秘钥

[root@web2 ~]# ssh-copy-id 192.168.2.100     ->秘钥拷贝给git服务器

[root@web2 ~]# git clone root@192.168.2.100:/var/git/base_ssh

[root@web2 ~]# git push               ->上传

2 GIT协议

GIT协议访问支持无授权访问

1)安装git-daemon软件包(web1主机操作)。

[root@web1 ~]# yum -y install git-daemon

2)创建版本库(web1主机操作)。

[root@web1 ~]# git init --bare /var/lib/git/base_git ->必须在/var/lib/git 目录创建仓库

Initialized empty Git repository in /var/lib/git/base_git/

3)修改配置文件,启动git服务(web1主机操作)。

[root@web1 ~]# vim /usr/lib/systemd/system/git@.service

修改前内容如下:

ExecStart=-/usr/libexec/git-core/git-daemon --base-path=/var/lib/git

–export-all --user-path=public_git --syslog --inetd –verbose

修改后内容如下:

ExecStart=-/usr/libexec/git-core/git-daemon --base-path=/var/git

–export-all --user-path=public_git --syslog --inetd –verbose

[root@web1 ~]# systemctl start git.socket

4)客户端访问方式(web2主机操作)

[root@web2 ~]# git clone git://192.168.2.100/base_git

3 HTTP协议

支持浏览器访问

1)服务器安装gitweb httpd软件包

[root@web1 ~]# yum -y install httpd gitweb

2)修改配置文件,设置仓库根目录(web1主机操作)。

[root@web1 ~]# vim +11 /etc/gitweb.conf

$projectroot = “/var/git”; #添加一行

创建版本仓库(web1主机操作)

[root@web1 ~]# git init --bare /var/git/base_http

=

4)启动httpd服务器

[root@web1 ~]# systemctl start httpd

5)客户端访问方式(web2主机操作)

注意:调用虚拟机中的firefox浏览器,需要在远程时使用ssh -X 服务器IP,并且确保真实主机的firefox已经关闭。

[root@web2 ~]# firefox http://192.168.2.100/git/

注册Github使用

Github 是一个面向开源及私有的软件项目托管平台

因为值支持git作为唯一的版本库格式进行托管,所以叫github

2008年上线

20190820190908317.png

五 软件RPM打包

1 应用场景

官方未提供rpm包

官方RPM无法定义

大量源码包,希望提供统一的软件管理机制

2 打包流程

准备源码软件

安装rpm-build

编写编译配置文件

编译rpm包

一 安装rpm-build

Yum -y install rpm-build

Rpmbuild -ba test.spec

Ls

二 准备源码软件

将源码包复制到rpmbuild子目录

Cp nginx-1.12.2.tar.gz rpmbuild/SOURCES

三 编写编译配置文件

新建SPEC文件

20190820190925778.png

Vim /root/rpmbuild/SPECS/nignx.spec

Name:hello 软件名称

Version: 软件版本

Release:1 rpm版本

Summary: 描述

License : 协议

Group: 软件组

URL      网址

Source0 源码文件

Buildroot 临时编译目录

Vim /root/rpmbuild/SPECS/nginx.spec

buildRequires 编译时依赖包

Requires 安装时依赖包

%description 详细描述

%prep 安装前准备,解压

%setup -q 系统使用setup自动解压,安静模式

%build 编译时需要执行的命令

Make

%configure 配置时需要执行的命令

Make %(_smp_mflags)

%install 安装时需要执行的指令

Rm -rf %{buildroot}

Make install DESDIR =%{buildroot}

%clean 清理时需要执行的指令

Rm -rf%{buildroot}

%files 定义打包文件列表

%defattr

%doc

%changlog 软件修改历史

四 编译RPM包

使用SPEC文件编译RPM包

Rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec

安装测试RPM包

Rpm -qpi xxx.rpm

Rpm -qpl xxx.rpm

Rpm -ivh xxx.rpm

步骤一:安装rpm-build软件

1)安装rpm-build软件包

[root@web1 ~]# yum -y install rpm-build

2)生成rpmbuild目录结构

[root@web1 ~]# rpmbuild -ba nginx.spec //会报错,没有文件或目录

[root@web1 ~]# ls /root/rpmbuild //自动生成的目录结构

BUILD BUILDROOT RPMS SOURCES SPECS SRPMS

3)准备工作,将源码软件复制到SOURCES目录

[root@web1 ~]# cp nginx-1.12.2.tar.gz /root/rpmbuild/SOURCES/

4)创建并修改SPEC配置文件

[root@web1 ~]# vim /root/rpmbuild/SPECS/nginx.spec

Name:nginx #源码包软件名称

Version:1.12.2 #源码包软件的版本号

Release: 10 #制作的RPM包版本号

Summary: Nginx is a web server software. #RPM软件的概述

License:GPL #软件的协议

URL: www.test.com #网址

Source0:nginx-1.12.2.tar.gz #源码包文件的全称

#BuildRequires: #制作RPM时的依赖关系

#Requires: #安装RPM时的依赖关系

%description

nginx [engine x] is an HTTP and reverse proxy server. #软件的详细描述

%post

useradd nginx #非必需操作:安装后脚本(创建账户)

%prep

%setup -q #自动解压源码包,并cd进入目录

%build

./configure

make %{?_smp_mflags}

%install

make install DESTDIR=%{buildroot}

%files

%doc

/usr/local/nginx/* #对哪些文件与目录打包

%changelog

步骤二:使用配置文件创建RPM包

1)安装依赖软件包

[root@web1 ~]# yum -y install gcc pcre-devel openssl-devel

2)rpmbuild创建RPM软件包

[root@web1 ~]# rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec

[root@web1 ~]# ls /root/rpmbuild/RPMS/x86_64/nginx-1.12.2-10.x86_64.rpm

步骤三:安装、卸载软件

[root@web1 ~]# rpm -ivh /root/rpmbuild/RPMS/x86_64/nginx-1.12.2-10.x86_64.rpm

[root@web1 ~]# rpm -qa |grep nginx

[root@web1 ~]# /usr/local/nginx/sbin/nginx

[root@web1 ~]# curl http://127.0.0.1/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值