標籤: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_puregem 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 mysqluseradd -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.gzmv mysql-5.6.31-linux-glibc2.5-x86_64 /usr/local/mysql
設定許可權
chown -R mysql:mysql /data/mysqlchown -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=/[email protected][email protected]=/data/[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/mysqldchkconfig --add mysqld
配置環境變數
echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.shsource /etc/profile.d/mysql.sh
製作RPM方案
指定RPM打包的目錄為/usr/local/mysql
指定安裝依賴包perl-Module-Install
指定安裝前執行指令碼:建立使用者組,建立目錄,配置許可權
指定安裝後執行指令碼:初始化,修改設定檔,配置啟動服務,配置環境變數
指定卸載後執行指令碼:刪除安裝目錄,刪除環境變數,刪除服務
製作RPM包目步驟
安裝前執行指令碼:install_mysql_post.sh
#!/bin/bashgroup=mysqluser=mysql#create group if not existsegrep "^$group" /etc/group >& /dev/nullif [ $? -ne 0 ];then groupadd $groupfi#create user if not existsegrep "^$user" /etc/passwd >& /dev/nullif [ $? -ne 0 ];then useradd -g $group -M -s /sbin/nologin $userfi#create datadir if not existsif [ ! -d /data/mysql ];then mkdir -p /data/mysqlelse echo "/data/mysql dir is exists" exit 2fiif [ -d /usr/local/mysql ];then echo "/usr/local/mysql directory is exists" exit 2fi
安裝後執行指令碼:install_mysql_pre.sh
#!/bin/bashhomedir=/usr/local/mysqldatadir=/data/mysql#Set permissionschown -R mysql:mysql $datadirchown -R mysql:mysql $homedir#Add my.cnf/bin/cp $homedir/support-files/my-default.cnf /etc/my.cnf#Add servicechkconfig --add mysqld
卸載後執行指令碼:uninstall_mysql_pre.sh
#!/bin/bashrm -rf /usr/local/mysqlecho "delete complete, but my.cnf and datadir is not delete"
執行下面命令建立RPM包
先安裝製作軟體包需要依賴包:
yum -y install rpm-buildfpm -s dir -t rpm -v 5.6.31 -n mysql --before-install install_mysql_post.sh --after-install install_mysql_pre.sh --after-remove 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包製作,實現一鍵安裝