使用ruby的fpm模塊實現對二進制MySQL的RPM包制作,實現一鍵安裝
隨著互聯網的發展,一些互聯網企業,甚至於傳統企業的服務器也是越來越多。將面臨的挑戰其中之一就是自動化運維管理。假設我們需要自動化部署很多的應用,而這些應用又很復雜,過程多,需要源碼安裝。就算你能夠用自動化來完成這些工作,但配置起來也是相當的麻煩。那麽現在就有一種技術可以將源碼安裝的應用封裝成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方案
指定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包的制作介紹已經完畢,如果你喜歡的文章或者博客可以收藏或關註,會不定期更新一些技術博文
本文出自 “藍色_風暴” 博客,請務必保留此出處http://270142877.blog.51cto.com/12869137/1954881
使用ruby的fpm模塊實現對二進制MySQL的RPM包制作,實現一鍵安裝