自動化部署必備技能—部署yum倉庫、定制rpm包
部署yum倉庫、定制rpm包
目錄
第1章 擴展 - yum緩存
1.1 yum緩存使用步驟... 1
1.1.1 導言... 1
1.1.2 修改配置文件... 1
1.1.3 使用緩存... 1
第2章 自動化部署必備技能—搭建YUM倉庫... 2
2.1 倉庫簡介... 2
2.1.1 導言... 2
2.1.2 使用說明:... 2
2.2 搭建YUM倉庫過程... 3
2.2.1 創建yum倉庫目錄... 3
2.2.2 安裝createrepo軟件... 3
2.2.3 初始化repodata索引文件... 3
2.2.4 提供yum服務(Python)... 4
2.2.5 在倉庫中添加新的rpm包... 4
2.3 客戶端配置及使用... 5
2.3.1 更改yum源... 5
2.3.2 清空之前的緩存... 5
2.3.3 指定使用yum庫... 5
2.3.4 直接yum安裝... 5
2.4 鏡像yum源... 6
2.4.1 鏡像同步公網yum源... 6
2.4.2 學生使用內網yum源方法... 6
2.4.3 結果展示... 6
第3章 自動化部署必備技能—定制化RPM包... 7
3.1 FPM打包工具安裝... 7
3.1.1 安裝依賴包... 7
3.1.2 2、第二步曲:更改倉庫... 8
3.2 FRM參數:... 8
3.3 Nginx打包實例參考:... 9
3.3.1 第一步:創建腳本:... 9
3.3.2 第二步:制作fpm包... 9
3.3.3 第三步:當前路徑查看fpm包(ls). 9
3.4 打包好的rpm 安裝方法:... 9
3.5 註意事項:... 10
第1章 擴展 - yum緩存
1.1 yum緩存使用步驟
1.1.1 導言
默認情況下,當前版本的 yum 在成功下載和安裝軟件包後,會把下載的文件刪掉。這樣可以減少 yum 占用的磁盤空間。你可以打開緩存(設置 /etc/yum.conf 中的 keepcache 選項為 1:keepcache=1)這樣 yum 將在緩存目錄保留下載到的文件。
1.1.2 修改配置文件
設置 /etc/yum.conf 中的 keepcache 選項為 1:keepcache=1
會將下載的安裝包緩存到/var/cache/yum/x86_64/下目錄中的packages
1.1.3 使用緩存
l 下載並緩存
[root@CeShi 6]# yum install gd-devel libcurl-devel
2 本地使用緩存下載
[root@CeShi 6]# yum -C install gd-devel libcurl-devel
3 註意:
/var/cache/yum/ 目錄下的所有文件包過目錄. 復制到另一臺機子下的相同目錄. 執行.
第2章 自動化部署必備技能—搭建YUM倉庫
2.1 倉庫簡介
2.1.1 導言
YUM主要用於自動安裝、升級rpm軟件包,它能自動查找並解決rpm包之間的依賴關系。要成功的使用YUM工具安裝更新軟件或系統,就需要有一個包含各種rpm軟件包的repository(軟件倉庫),這個軟件倉庫我們習慣稱為yum源。網絡上有大量的yum源,但由於受到網絡環境的限制,導致軟件安裝耗時過長甚至失敗。特別是當有大量服務器大量軟件包需要安裝時,緩慢的進度條令人難以忍受。因此我們在優化系統時,都會更換國內的源。
相比較而言,本地YUM源服務器最大優點是局域網的快速網絡連接和穩定性。有了局域網中的YUM源服務器,即便在Internet連接中斷的情況下,也不會影響其他YUM客戶端的軟件安裝和升級。
http://www.zyops.com/autodeploy-yum
2.1.2 使用說明:
使用內網倉庫安裝前提
1、客戶端:更改yum源
[root@B yum.repos.d]# vi xzy.repo
[xzy]
name=Server
baseurl=http://10.0.0.5
enable=1
gpgcheck=0
2、服務端:倉庫中需要有對應的rpm包(包括依賴包)
l 內網倉庫+定制rpm包
將定制的rpm包推送到到搭建的yum倉庫中 ,更新倉庫即可
l 使用內網倉庫
先在倉庫主機使用網上yum源: yum緩存到本機->復制到倉庫中->更新倉庫
2.2 搭建YUM倉庫過程
部署命令禮包
mkdir -p /application/yum/centos6.6/x86_64/
cd /application/yum/centos6.6/x86_64/
yum -y install createrepo
createrepo -pdo /application/yum/centos6.6/x86_64/ /application/yum/centos6.6/x86_64/
python -m SimpleHTTPServer 80 &>/dev/null &
2.2.1 創建yum倉庫目錄
mkdir -p /application/yum/centos6.6/x86_64/
cd /application/yum/centos6.6/x86_64/
rz # 上傳rpm包到此目錄,此目錄下面還可以包括文件夾
2.2.2 安裝createrepo軟件
yum -y install createrepo
2.2.3 初始化repodata索引文件
createrepo -pdo /application/yum/centos6.6/x86_64/ /application/yum/centos6.6/x86_64/
此目錄下會生成 drwxr-xr-x 2 root root 4096 Nov 4 18:51 repodata文件
-p --pretty 以整潔的格式輸出xml文件。
-d --database 該選項指定使用SQLite來存儲生成的元數據,默認項。
-o --outputdir <url> 指定元數據的輸出位置
2.2.4 提供yum服務(Python)
# 可以用Apache或nginx提供web服務,但用Python的http模塊更簡單,適用於內網環境
cd /application/yum/centos6.6/x86_64/ python -m SimpleHTTPServer 80 &>/dev/null &
註意:
必須在倉庫目錄下(相當於設置站點目錄)
端口號可以更改 (Python 默認的是8000)
可以通過瀏覽器輸入本機IP查看。
#
python -m SimpleHTTPServer 80 &>/dev/null &
執行這一條命令,就可以在瀏覽器中訪問此目錄
[root@CeShi ~]# python -m SimpleHTTPServer 80 &>/dev/null &
[1] 15294
2.2.5 在倉庫中添加新的rpm包
本機使用網上yum源: yum緩存到本機->復制到倉庫中->更新倉庫
1、修改:vim cat /etc/yum.conf keepcache=1 #緩存到本機
2、復制:[root@CeShi x86_64]# find /var/cache/yum/x86_64/6/ -name "*.rpm"|xargs cp -t /application/yum/centos6.6/x86_64/ #此目錄下rpm包可以在目錄下。
3、更新:createrepo --update /application/yum/centos6.6/x86_64/ #重要
2.3 客戶端配置及使用
2.3.1 更改yum源
cd /etc/yum.repos.d
[root@B yum.repos.d]# vi oldboy.repo
[XZY]
name=xzy
baseurl=http://10.0.0.5:80
enable=1
gpgcheck=0
2.3.2 清空之前的緩存
yum clean all
2.3.3 指定使用yum庫
yum --enablerepo=XZY --disablerepo=base,extras,updates,epel list
2.3.4 直接yum安裝
[root@backup yum.repos.d]# yum install mhash mcrypt
Loaded plugins: fastestmirror, security
* epel: mirrors.aliyun.com
epel/primary_db | 6.0 MB 00:06
XZY | 2.9 kB 00:00
XZY/primary_db | 35 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package mcrypt.x86_64 0:2.6.8-10.el6 will be installed
2.4 鏡像yum源 (不重要)
上面只是將自己制作的rpm包,放入yum源。但還有一種企業需求,說的更具體一點,平時學生上課yum安裝軟件都是從公網下載的,占用帶寬,因此在學校裏搭建一個內網yum服務器,但又考慮到學生回家也要使用yum安裝軟件,如果yum軟件的數據庫文件repodata不一樣,就會有問題。因此我想到的解決方法就是直接使用公網yum源的repodata。
2.4.1 鏡像同步公網yum源
說明
上遊yum源必須要支持rsync協議,否則不能使用rsync進行同步。
鏡像較大,所有的有300G左右。
# 同步base源,小技巧,我們安裝系統的光盤鏡像含有部分rpm包,大概3G,這些就不用重新下載。
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/
# epel源
/usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/
2.4.2 學生使用內網yum源方法
# 可以自建一個內網dns,如果沒有,可使用hosts解析。
echo ‘192.168.0.200 mirrors.aliyun.com‘ >>/etc/hosts
2.4.3 結果展示
[root@KVM data]# du -sh yum_data
21G yum_data
[root@KVM data]# tree -L 3 yum_data/
yum_data/
├── centos
│ ├── 6
│ │ ├── extras
│ │ ├── os
│ │ └── updates
│ └── RPM-GPG-KEY-CentOS-6
├── epel
│ └── 6
│ └── x86_64
第3章 自動化部署必備技能—定制化RPM包
3.1 FPM打包工具安裝
3.1.1 安裝依賴包
yum -y install ruby rubygems ruby-devel
3.1.2 第二步曲:更改倉庫
查看當前倉庫源命令
gem sources list
更改ruby倉
gem source -a http://mirrors.aliyun.com/rubygems/ -r http://rubygems.org/
3.1.3 第二步曲:安裝fpm 和json
gem install json -v 1.8.3
gem install fpm -v 1.3.3
3.2 FRM參數:
-s 指定源類型
-t 指定目標類型,即想要制作為什麽包
-n 指定包的名字
-v 指定包的版本號
-C 指定打包的相對路徑 Change directory to here before searching forfiles
-d 指定依賴於哪些包
-f 第二次打包時目錄下如果有同名安裝包存在,則覆蓋它
-p 輸出的安裝包的目錄,不想放在當前目錄下就需要指定
--post-install 軟件包安裝完成之後所要運行的腳本;同--after-install
--pre-install 軟件包安裝完成之前所要運行的腳本;同--before-install
--post-uninstall 軟件包卸載完成之後所要運行的腳本;同--after-remove
--pre-uninstall 軟件包卸載完成之前所要運行的腳本;同--before-remove
3.3 Nginx打包實例參考:
3.3.1 第一步:創建腳本:
#!/bin/bash
useradd www -M -s /bin/nologin
ln -s /application/nginx-1.10.2/ /application/nginx
3.3.2 第二步:制作fpm包
fpm -s dir -t rpm -n nginx -v 1.10.2 -d ‘pcre-devel,openssl-devel‘ --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.10.2/
註意: -f 後可以指定多個目錄
3.3.3 第三步:當前路徑查看fpm包(ls)
3.4 打包好的rpm 安裝方法:
1、推薦使用方法:yum localinstall 包名 ,(包在當前目錄下)
yum -y localinstall nginx-1.10.2-1.x86_64.rpm
[root@m01 application]# ll
total 4
lrwxrwxrwx 1 root root 26 Nov 1 23:26 nginx -> /application/nginx-1.10.2/
drwxr-xr-x 11 root root 4096 Nov 1 23:26 nginx-1.10.2
2、將定制好的rpm包傳到yum倉庫指定目錄下,進行yum安裝
3.5 註意事項:
1、打包的軟件要是絕對路徑
2、不能打包軟連接路徑
3、打包時軟件不能是運行狀態
推薦博客:http://blog.oldboyedu.com/category/automatic-operation/automatic-deployment/
自動化部署必備技能—部署yum倉庫、定制rpm包