您的位置:首页 > 编程语言 > Ruby

使用ruby的fpm模块实现对二进制MySQL的RPM包制作,实现一键安装

2017-08-09 17:36 756 查看
随着互联网的发展,一些互联网企业,甚至于传统企业的服务器也是越来越多。将面临的挑战其中之一就是自动化运维管理。假设我们需要自动化部署很多的应用,而这些应用又很复杂,过程多,需要源码安装。就算你能够用自动化来完成这些工作,但配置起来也是相当的麻烦。那么现在就有一种技术可以将源码安装的应用封装成rpm包,或者deb包等,完成一键安装,此方法运用得当可谓是如虎添翼
关于rpm包的封装制作方法有好多,我这里介绍的是一种相对简单的方法使用ruby的fpm模块来实现。学习成本低,方便,快捷

实验环境:最小化安装CentOS7系统
实现目标:将二进制部署的MySQL打包为RPM包,实现一键安装

ruby环境准备:
安装ruby环境
yum -y install rubygems ruby-devel rubygems-devel
添加taobao的gem源,删除默认源(安装模块速度快)
查看gem源
gem sources -l
添加新源,并删除默认源
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/[/code]更新gem软件 
gem install json_pure
gem update --system
安装fpm模块
查看已安装的模块
gem list
安装fpm模块
gem install fpm
安装模块时指定版本号,和输出详细信息
例:
gem install json -v 1.8.3 –V
小v为指定版本号,大V输出详细安装信息

fpm常用选项介绍
-C          #指定fpm去哪个目录查找打包的文件
-s          #指定源的类型,如dir
-t          #指定目标类型,如rpm包,或者deb包等
--vendor       #指定包的vendor名字
-n          #指定包的名字
-v          #指定包的版本号
-d          #指定依赖包
--prefix       #指定安装路径
--post-install    #包安装后要运行的脚本,等同于--before-install
--pre-install     #包安装前要运行的脚本,等同于--after-install
--post-uninstall   #包卸载后要运行的脚本,等同于--before-remove
--pre-uninstall    #包卸载前要运行的脚本,等同于--after-remove

二进制安装MySQL5.6步骤
创建MySQL用户组
groupadd mysql
useradd -M -g mysql -s /sbin/nologin mysql
创建MySQL数据目录
mkdir -p /data/mysql
解压二进制包,并复制到/usr/local/mysql
tar -xvzf mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.31-linux-glibc2.5-x86_64 /usr/local/mysql
设置权限
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql
初始化和安装依赖包:
yum -y install perl-Module-Install
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql
修改配置文件
sed -i '/^datadir=/s@datadir=@datadir=/data/mysql@' /usr/local/mysql/support-files/mysql.server

/bin/cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
配置启动服务
ln /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
配置环境变量
echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

制作RPM方案
指定RPM打包的目录为/usr/local/mysql

指定安装依赖包perl-Module-Install

指定安装前执行脚本:创建用户组,创建目录,配置权限

指定安装后执行脚本:初始化,修改配置文件,配置启动服务,配置环境变量

指定卸载后执行脚本:删除安装目录,删除环境变量,删除服务

制作RPM包目步骤
安装前执行脚本:install_mysql_post.sh
#!/bin/bash

group=mysql
user=mysql

#create group if not exists
egrep "^$group" /etc/group >& /dev/null
if [ $? -ne 0 ];then
groupadd $group
fi

#create user if not exists
egrep "^$user" /etc/passwd >& /dev/null
if [ $? -ne 0 ];then
useradd -g $group -M -s /sbin/nologin $user
fi

#create datadir if not exists
if [ ! -d /data/mysql ];then
mkdir -p /data/mysql
else
echo "/data/mysql dir is exists"
exit 2
fi
if [ -d /usr/local/mysql ];then
echo "/usr/local/mysql directory is exists"
exit 2
fi
安装后执行脚本:install_mysql_pre.sh
#!/bin/bash

homedir=/usr/local/mysql
datadir=/data/mysql

#Set permissions
chown -R mysql:mysql $datadir
chown -R mysql:mysql $homedir

#Add my.cnf
/bin/cp $homedir/support-files/my-default.cnf /etc/my.cnf

#Add service
chkconfig --add mysqld
卸载后执行脚本:uninstall_mysql_pre.sh
#!/bin/bash

rm -rf /usr/local/mysql
echo "delete complete, but my.cnf and datadir is not delete"
执行下面命令创建RPM包
先安装制作软件包需要依赖包:
yum -y install rpm-build

fpm -s dir -t rpm -v 5.6.31 -n mysql --before-install install_mysql_post.sh --after-install install_mysql_pre.sh --after-remo
ve uninstall_mysql_pre.sh -d 'perl-Module-Install' /usr/local/mysql /data/mysql /etc/init.d/mysqld /etc/profile.d/mysql.sh
命令执行过程有点长,完成后会在当前目录下生成mysql-5.6.31-1.x86_64.rpm的包,这时候就可以将此包复制到其它CentOS7系统上进行测试,如果是CentOS6系统的话,只是一些依赖包不一样,其它都一样
关于其它的一些选项,比如作者,平台等信息可以查找更多资料,使用以下命令可以查看rpm执行脚本的信息:
rpm -qp --scripts mysql-5.6.31-1.x86_64.rpm


至此对RPM包的制作介绍已经完毕,如果你喜欢的文章或者博客可以收藏或关注,会不定期更新一些技术博文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rpm fpm