1. 程式人生 > >使用ruby的fpm模塊實現對二進制MySQL的RPM包制作,實現一鍵安裝

使用ruby的fpm模塊實現對二進制MySQL的RPM包制作,實現一鍵安裝

rpm fpm

隨著互聯網的發展,一些互聯網企業,甚至於傳統企業的服務器也是越來越多。將面臨的挑戰其中之一就是自動化運維管理。假設我們需要自動化部署很多的應用,而這些應用又很復雜,過程多,需要源碼安裝。就算你能夠用自動化來完成這些工作,但配置起來也是相當的麻煩。那麽現在就有一種技術可以將源碼安裝的應用封裝成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/

更新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 [email protected][email protected][email protected] /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方案

  1. 指定RPM打包的目錄為/usr/local/mysql

  2. 指定安裝依賴包perl-Module-Install

  3. 指定安裝前執行腳本:創建用戶組,創建目錄,配置權限

  4. 指定安裝後執行腳本:初始化,修改配置文件,配置啟動服務,配置環境變量

  5. 指定卸載後執行腳本:刪除安裝目錄,刪除環境變量,刪除服務

制作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包的制作介紹已經完畢,如果你喜歡的文章或者博客可以收藏或關註,會不定期更新一些技術博文

本文出自 “藍色_風暴” 博客,請務必保留此出處http://270142877.blog.51cto.com/12869137/1954881

使用ruby的fpm模塊實現對二進制MySQL的RPM包制作,實現一鍵安裝