千家信息网

一键自动化部署(定制rpm包)

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,部署--前篇上午将MySQL多实例部署完成,由于有公司特定一些需求,需要源码安装,现在需要批量部署,如果一台台部署,就太过麻烦,而且浪费时间,这个时候自动化部署 就体现出价值了我们将MySQL制作定制
千家信息网最后更新 2025年11月07日一键自动化部署(定制rpm包)

部署--前篇

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

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

如果MySQL多实例还没配置的,或不了解软件的安装方式 的

请参考:http://qiuyt.blog.51cto.com/1229789/1920686

# 博主新的博客地址: https://www.dgstack.cn/ 进入有惊喜哦~~ 欢迎收藏

一、Yum安装介绍

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

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


二、制作rpm包

FPM的作者是jordansissel

FPM的github:https://github.com/jordansissel/fpm

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.3gem 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/scriptscat >>mysql_rpm.sh<>/etc/rc.local  #添加开机自启动echo "/data/3306/mysql start " >>/etc/rc.local  echo "/data/3307/mysql start " >>/etc/rc.localEOF

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]# lsmysql-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.dmkdir yum_bak && mv *repo yum_bakcat >>oldboy.repo<

测试MySQL 登录

[root@db01 ~]# netstat -lntup|grep 33tcp        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 1Server version: 5.5.32-log Source distributionCopyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.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)##为安全起见设置myslq密码 及 删除无用账户,权限最小化 设置等等都可自行配置了过段时间我也会,写一篇关于mysql安全的帖子,请您多多支持,多多关注,谢谢。如有问题随时留言,沟通,感谢!!!


目录 脚本 仓库 类型 版本 软件 运行 客户 客户端 就是 制作 编译 信息 参数 实例 系统 路径 软件包 问题 配置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 excel找回数据库 软件开发可以转行其他专业吗 数据库培训心得 数据库int10和int8区别 永兴安卓软件开发多少钱一个月 华为公司计算机网络技术岗位 竹田网络技术 绍兴ios软件开发多少钱 腾讯网络安全诊断摄像头 选择外国服务器安全吗 sql2000 收缩数据库 数据库理解 配置服务器需要连接什么线 软件开发三个月可以学会吗 贵州pdu服务器专用电源怎么样 服务器虚拟机怎么查看是否是正版 计算机科学与技术考研网络安全吗 计算机网络技术分为几个方面 高级助手无法连接服务器 云南电信dns服务器云主机 ctf网络安全大赛报名费 网络安全管理方案实施 vb6 连接数据库 云龙区网络营销软件开发质量服务 党政机关网络安全体系建设 无锡运营网络技术参考价格 药品网络技术服务合同 唐山盘位机架式服务器 共享应用软件开发 河南互联网软件开发诚信服务
0