溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

一鍵自動化部署(定制rpm包)

發(fā)布時間:2020-07-14 05:45:26 來源:網(wǎng)絡(luò) 閱讀:12360 作者:邱月濤 欄目:MySQL數(shù)據(jù)庫

部署--前篇   

    上午將MySQL多實例部署完成,由于有公司特定一些需求,需要源碼安裝,現(xiàn)在需要批量部署,如果一臺臺部署,就太過麻煩,而且浪費時間,這個時候自動化部署 就體現(xiàn)出價值了

    我們將MySQL制作定制化rpm包,然后放到我們的yum倉庫中,在將yum所有客戶端,都指向yum源,之后就是喝喝茶,看看片,輕松批量部署了,廢話不多說,開干。

  如果MySQL多實例還沒配置的,或不了解軟件的安裝方式 的

 請參考:http://qiuyt.blog.51cto.com/1229789/1920686

# 博主新的博客地址: https://www.dgstack.cn/ 進入有驚喜哦~~ 歡迎收藏

一、Yum安裝介紹

   yum就是{Yellow dog Updater, Modified} ×××的狗,用來針對rpm包的管理器。

它的優(yōu)點:簡單、高效,解決依賴問題;缺點:前期定制包復(fù)雜


二、制作rpm包

FPM的作者是jordansissel

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

FPM功能簡單說就是將一種類型的包轉(zhuǎn)換成另一種類型

rpm:redhat 包管理器,具有升級、查詢、驗證,安裝,卸載等5大功能;

可通過rpm --help 獲取幫助信息  ##--hep用來查看系統(tǒng)內(nèi)置參數(shù)

 1,rpm 支持那些包的轉(zhuǎn)換?

  源類型包:

    dir :將目錄打包成rpm包,就是將編譯安裝好的目錄,直接打包,到對端就相當(dāng)于安裝目錄解壓。
    rpm:對rpm進行轉(zhuǎn)換
    gem:對rubygem進行轉(zhuǎn)換
    pythom :將python包打包成相應(yīng)的類型

  目標類型包:可以轉(zhuǎn)發(fā)成什么類型的包

    rpm         轉(zhuǎn)換為rpm包
    deb         轉(zhuǎn)換為deb包
    solaris       轉(zhuǎn)換為solaris包
    puppet       轉(zhuǎn)換為puppet模塊

 2,安裝FPM打包工具

  1)安裝ruby模塊

 yum -y install ruby rubygems ruby-devel
 gem sources list  # 查看當(dāng)前使用的rubygems倉庫

   2)更新yum源

 添加國內(nèi)的 淘寶的Rubygems倉庫,外國的源慢,移除原生的Ruby倉庫

gem sources --add http://gems.ruby-china.org --remove http://rubygems.org/

   3)安裝fpm及json依賴包

gem install json -v 1.8.3
gem install fpm -v 1.3.3

    gem從rubygem倉庫安裝軟件類似yum從yum倉庫安裝軟件。首先安裝低版本的json,高版本的json需要ruby2.0以上,然后安裝低版本的fpm,夠用就行。

# 上面的2步安裝僅適合CentOS6系統(tǒng),CentOS7系統(tǒng)一步搞定,即gem install fpm

  4)驗證

rpm --help  #如果有輸出代表安裝成功

3,FPM參數(shù)說明

詳細使用見fpm –help

常用參數(shù)
-s          指定源類型  (例如dir 目錄)
-t          指定目標類型,即想要制作為什么包 (比如想做個rpm包)
-n          指定包的名字 ,-name 
-v          指定包的版本號  (用于區(qū)分rpm,有同名字但版本不同)
-C          指定打包的相對路徑  Change directory to here before searching forfiles
-d          指定依賴于哪些包
-f          第二次打包時目錄下如果有同名安裝包存在,則強制覆蓋它
-p          輸出的安裝包的目錄,不想放在當(dāng)前目錄下就需要指定
--post-install      執(zhí)行rpm包之后所要運行的腳本;同--after-install
--pre-install      軟件包安裝完成之前所要運行的腳本;同--before-install
--post-uninstall    軟件包卸載完成之后所要運行的腳本;同--after-remove
--pre-uninstall     軟件包卸載完成之前所要運行的腳本;同--before-remove

4,定制MySQL rpm包

用法:rpm包執(zhí)行前運行的腳本 + rpm包 + rpm包執(zhí)行后腳本

我們這個myslq 之前是編譯安裝的,所以rpm包運行前腳本沒有,直接考慮哪些目錄需要打包

1,確認打包目錄

rpm需要打包的目錄有哪些:(從你編譯安裝過程中查看哪些需要打包)

/data 目錄 ##這個是多實例的數(shù)據(jù)存放目錄
/application/mysql-5.5.32/   #這個是mysql安裝目錄

2,創(chuàng)建腳本

打包后需要執(zhí)行的命令,放入腳本中(從你編譯安裝過程中查看哪些命令需要解壓目錄后執(zhí)行)

確認后,創(chuàng)建腳本
mkdir -p /server/scripts && cd /server/scripts
cat >>mysql_rpm.sh<<EOF 
#!/bin/bash
useradd -s /sbin/nologin mysql -M -u 503
ln -s /application/mysql-5.5.32/ /application/mysql   #創(chuàng)建軟鏈接
find /data -type f -name "mysql"|xargs chmod +x #給mysql啟動腳本+執(zhí)行權(quán)限
chown -R mysql.mysql /data  #授權(quán)/data目錄mysql 屬主屬組
cp /application/mysql/bin/* /usr/local/sbin/
/data/3306/mysql start    #啟動多實例
/data/3307/mysql start
echo "# mysql multi instances" >>/etc/rc.local  #添加開機自啟動
echo "/data/3306/mysql start " >>/etc/rc.local  
echo "/data/3307/mysql start " >>/etc/rc.local
EOF

3,生成rpm包

將目錄打包(rpm包,包內(nèi)包含腳本及目錄)(前面是框  后面是蘋果)

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]# ls
mysql-5.5.32-1.x86_64.rpm  mysql_rpm.sh
#-s 指定目錄類型 -t 指定打包類型 -n指定rpm包名 -v 版本號  --post-install 打包后執(zhí)行的腳本  -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包內(nèi)的信息

rpm -qp --scripts  mysql-5.5.32-1.x86_64.rpm     #查看包內(nèi)腳本信息
rpm -qpl mysql-5.5.32-1.x86_64.rpm      ##查看rpm包內(nèi)包含哪些文件及目錄

注意:mysql這個目錄比較大,用fpm打包耗時長。平時我們有可能需要對nginx或php做優(yōu)化,這樣又得重新打包。因此我們可以將mysql分離出來,分別打包。只需在制作nginx+php的rpm包時添加mysql的依賴即可。


四、放入YUM倉庫,客戶端一鍵安裝測試

    1)上傳rpm包到y(tǒng)um倉庫

scp mysql-5.5.32-1.x86_64.rpm root@172.16.1.101:/application/yum/centos6.8/x86_64
#我這里yum倉庫為內(nèi)網(wǎng)使用IP地址:172.16.1.101,如果沒有*** 可以考慮先給個外網(wǎng)IP10.0.0.101

一鍵自動化部署(定制rpm包)

   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(客戶端

#開啟一臺新的設(shè)備,配置yum倉庫客戶端
cd /etc/yum.repos.d
mkdir yum_bak && mv *repo yum_bak
cat >>oldboy.repo<<EOF
[oldboy]
name=Server
baseurl=http://172.16.1.101/yum
enable=1
gpgcheck=0
EOF
yum clean all      
##清空緩存
如果yum倉庫中,一個軟件有多個版本,可以采用如下方法安裝,(你需要的版本)
1,yum list|grep 關(guān)鍵字 
2,將軟件版本 復(fù)制
3,yum install  復(fù)制內(nèi)容

一鍵自動化部署(定制rpm包)

測試MySQL 登錄

[root@db01 ~]# netstat -lntup|grep 33
tcp        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 1
Server version: 5.5.32-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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)

##為安全起見設(shè)置myslq密碼 及 刪除無用賬戶,權(quán)限最小化 設(shè)置等等都可自行配置了
過段時間我也會,寫一篇關(guān)于mysql安全的帖子,請您多多支持,多多關(guān)注,謝謝。
如有問題隨時留言,溝通,感謝?。?!


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI