百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

详解定制rpm包一键部署过程 rpm包制作

qiyuwang 2024-10-19 08:57 28 浏览 0 评论

概述

上午将MySQL多实例部署完成,由于有公司特定一些需求,需要源码安装,现在需要批量部署,如果一台台部署,就太过麻烦,而且浪费时间,这个时候自动化部署 就体现出价值了

我们将MySQL制作定制化rpm包,然后放到我们的yum仓库中,在将yum所有客户端,都指向yum源,之后就是喝喝茶,看看片,轻松批量部署了,废话不多说,开干。

Yum安装介绍

yum就是{Yellow dog Updater, Modified} ×××的狗,用来针对rpm包的管理器。

它的优点:简单、高效,解决依赖问题;缺点:前期定制包复杂


制作rpm包

FPM功能简单说就是将一种类型的包转换成另一种类型

rpm:redhat 包管理器,具有升级、查询、验证,安装,卸载等5大功能;

可通过rpm --help 获取帮助信息 ##--hep用来查看系统内置参数

1,rpm 支持那些包的转换?

源类型包:

 dir :将目录打包成rpm包,就是将编译安装好的目录,直接打包,到对端就相当于安装目录解压。
 rpm:对rpm进行转换
 gem:对rubygem进行转换
 pythom :将python包打包成相应的类型

目标类型包:可以转发成什么类型的包

 rpm 转换为rpm包
 deb 转换为deb包
 solaris 转换为solaris包
 puppet 转换为puppet模块

2,安装FPM打包工具

1)安装ruby模块

 yum -y install ruby rubygems ruby-devel
 gem sources list # 查看当前使用的rubygems仓库

2)更新yum源

注:添加国内的 淘宝的Rubygems仓库,外国的源慢,移除原生的Ruby仓库

gem sources --add http://gems.ruby-china.org --remove http://rubygems.org/

3)安装fpm及json依赖包

gem install json -v 1.8.3
gem install fpm -v 1.3.3

gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的json,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用就行。

# 上面的2步安装仅适合CentOS6系统,CentOS7系统一步搞定,即gem install fpm

4)验证

rpm --help #如果有输出代表安装成功

3,FPM参数说明

详细使用见fpm –help

常用参数
-s 指定源类型 (例如dir 目录)
-t 指定目标类型,即想要制作为什么包 (比如想做个rpm包)
-n 指定包的名字 ,-name 
-v 指定包的版本号 (用于区分rpm,有同名字但版本不同)
-C 指定打包的相对路径 Change directory to here before searching forfiles
-d 指定依赖于哪些包
-f 第二次打包时目录下如果有同名安装包存在,则强制覆盖它
-p 输出的安装包的目录,不想放在当前目录下就需要指定
--post-install 执行rpm包之后所要运行的脚本;同--after-install
--pre-install 软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove

4,定制MySQL rpm包

用法:rpm包执行前运行的脚本 + rpm包 + rpm包执行后脚本

我们这个myslq 之前是编译安装的,所以rpm包运行前脚本没有,直接考虑哪些目录需要打包

1,确认打包目录

rpm需要打包的目录有哪些:(从你编译安装过程中查看哪些需要打包)

/data 目录 ##这个是多实例的数据存放目录
/application/mysql-5.5.32/ #这个是mysql安装目录

2,创建脚本

打包后需要执行的命令,放入脚本中(从你编译安装过程中查看哪些命令需要解压目录后执行)

确认后,创建脚本
mkdir -p /server/scripts && cd /server/scripts
cat >>mysql_rpm.sh<<EOF 
#!/bin/bash
useradd -s /sbin/nologin mysql -M -u 503
ln -s /application/mysql-5.5.32/ /application/mysql #创建软链接
find /data -type f -name "mysql"|xargs chmod +x #给mysql启动脚本+执行权限
chown -R mysql.mysql /data #授权/data目录mysql 属主属组
cp /application/mysql/bin/* /usr/local/sbin/
/data/3306/mysql start #启动多实例
/data/3307/mysql start
echo "# mysql multi instances" >>/etc/rc.local #添加开机自启动
echo "/data/3306/mysql start " >>/etc/rc.local 
echo "/data/3307/mysql start " >>/etc/rc.local
EOF

3,生成rpm包

将目录打包(rpm包,包内包含脚本及目录)(前面是框 后面是苹果)

1)Mysql定制rpm包

[root@db02 scripts]# fpm -s dir -t rpm -n mysql -v5.5.32 --post-install /server/scripts/mysql_rpm.sh -f /data/ /application/mysql-5.5.32/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"mysql-5.5.32-1.x86_64.rpm"}
[root@db02 scripts]# ls
mysql-5.5.32-1.x86_64.rpm mysql_rpm.sh
#-s 指定目录类型 -t 指定打包类型 -n指定rpm包名 -v 版本号 --post-install 打包后执行的脚本 -f 指定要打包的目录路径
#注意打包要使用相对路径问题

2)站点部署www bbs blog

fpm -s dir -t rpm -n three_web -v 1.0 -f /application/nginx/html/

3)LB负载均衡

fpm -s dir -t rpm -n lb -v 1.8.1 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/install_LB.sh -f /application/nginx-1.8.1/
lb-1.8.1-1.x86_64

查看rpm包内的信息

rpm -qp --scripts mysql-5.5.32-1.x86_64.rpm #查看包内脚本信息
rpm -qpl mysql-5.5.32-1.x86_64.rpm ##查看rpm包内包含哪些文件及目录

注意:mysql这个目录比较大,用fpm打包耗时长。平时我们有可能需要对nginx或php做优化,这样又得重新打包。因此我们可以将mysql分离出来,分别打包。只需在制作nginx+php的rpm包时添加mysql的依赖即可。


放入YUM仓库,客户端一键安装测试

1)上传rpm包到yum仓库

scp mysql-5.5.32-1.x86_64.rpm root@172.16.1.101:/application/yum/centos6.8/x86_64
#我这里yum仓库为内网使用IP地址:172.16.1.101,如果没有*** 可以考虑先给个外网IP10.0.0.101



2) 更新yum仓库list

[root@Qiuyuetao x86_64]# createrepo --update /application/yum/centos6.8/x86_64/
rpm包名:mysql-5.5.32-1.x86_64.rpm

3)一键部署Mysql(客户端)

#开启一台新的设备,配置yum仓库客户端
cd /etc/yum.repos.d
mkdir yum_bak && mv *repo yum_bak
cat >>oldboy.repo<<EOF
[oldboy]
name=Server
baseurl=http://172.16.1.101/yum
enable=1
gpgcheck=0
EOF
yum clean all 
##清空缓存
如果yum仓库中,一个软件有多个版本,可以采用如下方法安装,(你需要的版本)
1,yum list|grep 关键字 
2,将软件版本 复制
3,yum install 复制内容


测试MySQL 登录

[root@db01 ~]# netstat -lntup|grep 33
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2812/mysqld 
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 2833/mysqld
[root@db01 ~]# mysql -uroot -S /data/3306/mysql.sock 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.32-log Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.03 sec)

后面小编会分享更多这方面的干货,感兴趣的朋友可以关注一下~

相关推荐

# 安装打开 ubuntu-22.04.3-LTS 报错 解决方案

#安装打开ubuntu-22.04.3-LTS报错解决方案WslRegisterDistributionfailedwitherror:0x800701bcError:0x80070...

利用阿里云镜像在ubuntu上安装Docker

简介:...

如何将Ubuntu Kylin(优麒麟)19.10系统升级到20.04版本

UbuntuKylin系统使用一段时间后,有新的版本发布,如何将现有的UbuntuKylin系统升级到最新版本?可以通过下面的方法进行升级。1.先查看相关的UbuntuKylin系统版本情况。使...

Ubuntu 16.10内部代号确认为Yakkety Yak

在正式宣布Ubuntu16.04LTS(XenialXerus)的当天,Canonical创始人MarkShuttleworth还非常开心的在个人微博上宣布Ubuntu下个版本16.10的内...

如何在win11的wsl上装ubuntu(怎么在windows上安装ubuntu)

在Windows11的WSL(WindowsSubsystemforLinux)上安装Ubuntu非常简单。以下是详细的步骤:---...

Win11学院:如何在Windows 11上使用WSL安装Ubuntu

IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...

如何查看Linux的IP地址(如何查看Linux的ip地址)

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。...

怎么看电脑系统?(怎么看电脑系统配置)

要查看电脑的操作系统信息,可以按照以下步骤操作,根据不同的操作系统选择对应的方法:一、Windows系统通过系统属性查看右键点击桌面上的“此电脑”(或“我的电脑”)图标,选择“属性”。在打开的...

如何查询 Linux 内核版本?这些命令一定要会!

Linux内核是操作系统的核心,负责管理硬件资源、调度进程、处理系统调用等关键任务。不同的内核版本可能支持不同的硬件特性、提供新的功能,或者修复了已知的安全漏洞。以下是查询内核版本的几个常见场景:...

深度剖析:Linux下查看系统版本与CPU架构

在Linux系统管理、维护以及软件部署的过程中,精准掌握系统版本和CPU架构是极为关键的基础操作。这些信息不仅有助于我们深入了解系统特性、判断软件兼容性,还能为后续的软件安装、性能优化提供重要依据。接...

504 错误代码解析与应对策略(504错误咋解决)

在互联网的使用过程中,用户偶尔会遭遇各种错误提示,其中504错误代码是较为常见的一种。504错误并非意味着网站被屏蔽,它实际上是指服务器在规定时间内未能从上游服务器获取响应,专业术语称为“Ga...

猎聘APP和官网崩了?回应:正对部分职位整改,临时域名可登录

10月12日,有网友反映猎聘网无法打开,猎聘APP无法登录。截至10月14日,仍有网友不断向猎聘官方微博下反映该情况,而猎聘官方微博未发布相关情况说明,只是在微博内对反映该情况的用户进行回复,“抱歉,...

域名解析的原理是什么?域名解析的流程是怎样的?

域名解析是网站正常运行的关键因素,因此网站管理者了解域名解析的原理和流程对于做好域名管理、解决常见解析问题,保障网站的正常运转十分必要。那么域名解析的原理是什么?域名解析的流程是怎样的?接下来,中科三...

Linux无法解析域名的解决办法(linux 不能解析域名)

如果由于误操作,删除了系统原有的dhcp相关设置就无法正常解析域名。  此时,需要手动修改配置文件:  /etc/resolv.conf  将域名解析服务器手动添加到配置文件中  该文件是DNS域名解...

域名劫持是什么?(域名劫持是什么)

域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。说的直白些,域名劫持,就是把互...

取消回复欢迎 发表评论: