FPM定製RPM包實踐

来源:http://www.cnblogs.com/clsn/archive/2017/10/30/7755242.html
-Advertisement-
Play Games

1.1 快速部署方案 ✔ 問題:當領導給你 100 台已經安裝好系統的伺服器,然後讓優化,讓你提出一個快速部署方案。 解答: 1.tar 打包 先編譯安裝 打包--》分發--》解包(比如 mysql 打包後直接就可以使用 2.SaltStack,puppet,ansible 3.定製 rpm yum ...


1.1 快速部署方案

 問題:當領導給你 100 台已經安裝好系統的伺服器,然後讓優化,讓你提出一個快速部署方案。

解答:

  1.tar 打包 先編譯安裝 打包--》分發--》解包(比如 mysql 打包後直接就可以使用

  2.SaltStackpuppetansible

  3.定製 rpm yum 倉庫 yum 安裝

  4.openstack 虛擬機鏡像和 docker 容器分發

1.2 回顧下安裝軟體的三種方式:

1、編譯安裝軟體,優點是可以定製化安裝目錄、按需開啟功能等,缺點是需要查找並實驗出適合的編譯參數,諸如MySQL之類的軟體編譯耗時過長。

2yum安裝軟體,優點是全自動化安裝,不需要為依賴問題發愁了,缺點是自主性太差,軟體的功能、存放位置都已經固定好了,不易變更。

===>如果你現在還為是使用編譯安裝軟體還是使用yum安裝軟體發愁,那你就out了。

3、編譯源碼,根據自己的需求做成定製RPM包–>搭建內網yum倉庫–yum安裝。結合前兩者的優點,暫未發現什麼缺點。可能的缺點就是RPM包的通用性差,只能適用於本公司的環境。另外一般人不會定製RPM包。這是中大型互聯網企業運維自動化的必要技能。

這裡也不介紹rpm的概念,想瞭解的朋友可以查看http://www.ibm.com/developerworks/cn/linux/l-rpm/

1.3 FPM打包工具

FPM的作者是jordansissel

FPMgithubhttps://github.com/jordansissel/fpm

FPM功能簡單說就是將一種類型的包轉換成另一種類型。

1.3.1 支持的源類型包

類型

說明

dir  

將目錄打包成所需要的類型,可以用於源碼編譯安裝的軟體包

rpm  

rpm進行轉換

gem  

rubygem包進行轉換

python

python模塊打包成相應的類型

1.3.2 支持的目標類型包

類型

說明

rpm   

轉換為rpm

deb   

轉換為deb

solaris

轉換為solaris

puppet

轉換為puppet模塊

1.4 FPM的安裝與使用

1.4.1 安裝FPM工具

fpmruby寫的,因此系統環境需要ruby,且ruby版本號大於1.8.5

# 安裝ruby模塊

yum -y install ruby rubygems ruby-devel

[root@test ~]# rpm -qa ruby rubygems ruby-devel
ruby-1.8.7.374-5.el6.x86_64
ruby-devel-1.8.7.374-5.el6.x86_64
rubygems-1.3.7-5.el6.noarch

# 查看當前使用的rubygems倉庫

gem sources list

# 添加阿裡雲的Rubygems倉庫,外國的源慢,移除原生的Ruby倉庫

gem sources -a http://mirrors.aliyun.com/rubygems/
gem sources --remove http://rubygems.org/

# 安裝fpmgemrubygem倉庫安裝軟體類似yumyum倉庫安裝軟體。首先安裝低版本的json,高版本的json需要ruby2.0以上,然後安裝低版本的fpm,夠用。

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

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

1.4.2 FPM工具常用參數

參數

參數說明

-s

指定源類型

-t

指定目標類型,即想要製作為什麼包

-n

指定包的名字

-v

指定包的版本號

-C

指定打包的相對路徑 

-d

指定依賴於哪些包

-f

第二次打包時目錄下如果有同名安裝包存在,則覆蓋它

-p

輸出的安裝包的目錄,不想放在當前目錄下就需要指定

--post-install 

軟體包安裝完成之後所要運行的腳本;同--after-install

--pre-install  

軟體包安裝完成之前所要運行的腳本;同--before-install

--post-uninstall

軟體包卸載完成之後所要運行的腳本;同--after-remove

--pre-uninstall

軟體包卸載完成之前所要運行的腳本;同--before-remove

至此,FPM工具安裝完成。

1.5 【實例】定製nginxRPM

1.5.1 安裝nginx(一鍵化腳本)

 

yum install -y pcre-devel openssl-devel
mkdir -p /server/tools
cd /server/tools
wget -q http://nginx.org/download/nginx-1.10.2.tar.gz
ls -l nginx-1.10.2.tar.gz
useradd www -s /sbin/nologin -M
tar xf nginx-1.10.2.tar.gz
cd nginx-1.10.2
./configure  --user=nginx --group=nginx --prefix=/application/nginx-1.10.2 --with-http_stub_status_module  --with-http_ssl_module
make
make install
ln -s /application/nginx-1.10.2 /application/ngin

 

1.5.2 編寫腳本(for --post-install)

[root@test ~]# cd /server/scripts/
[root@test scripts]# vim nginx_install_devel.sh 
#!/bin/bash
useradd -M -s /sbin/nologin www -u 666
ln -s /application/nginx/sbin/* /usr/local/sbin/
ln -sf /application/nginx-1.10.2   /application/nginx

1.5.3 打包-製作rpm

註意:在進行打包的時候要將訪問停止

killall nginx

[root@test ~]#  fpm -s dir -t rpm -n nginx -v 1.10.2 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_install_devel.sh -f /application/nginx-1.10.2/ 
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=>"nginx-1.10.2-1.x86_64.rpm"}

1.5.4 安裝rpm

推薦使用yum 安裝

yum -y localinstall  nginx-1.10.2-1.x86_64.rpm

這個命令會自動先安裝rpm包的依賴,然後再安裝rpm包。

另:可以搭建本地yum倉庫實現yum 安裝自動解決依賴關係

1 #簡易的搭建yum源的方法可以參考↓
2 http://www.cnblogs.com/znix/p/7757868.html

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 環境: Linux js代碼: 迴圈刪除表中的數據: clear-mongodb-dialog.js 執行: --quiet 參數代表靜默執行,不會列印log等。 ...
  • 普通模式整合 一、在pom.xml中引入redis的依賴 二、新建redis.xml文件 三、在spring的配置文件中引入redis.xml 四、編寫dao層 五、編寫service層 六、寫測試類進行測試 哨兵模式(sentinel) 就一個配置文件獨特一點 redis-sentinel.xml ...
  • 一:概述 當我們設計一個系統時,需要考慮到系統的運行一段時間後,表裡數據量大約有多少,如果在初期,就能估算到某幾張表數據量非常龐大時(比如聊天消息表),就要把表創建好,這篇文章從創建表,增加數據,以及欄位擴展,這幾個方面來給出建議。 二:創建表 假如現在我們需要創建IM項目中的聊天消息表,這個表數據 ...
  • Linux下的大頁分為兩種類型:標準大頁(Huge Pages)和透明大頁(Transparent Huge Pages)。Huge Pages有時候也翻譯成大頁/標準大頁/傳統大頁,它們都是Huge Pages的不同中文翻譯名而已,順帶提一下這個,免得有人被這些名詞給混淆、誤導了。Huge Pag... ...
  • 本來一直想瞭解瀏覽器地址欄中url尾碼名如何去除,今天正好抽空折騰一下。 下麵參考一位博友文章(出處見文章末尾),基於windows平臺(windows7)詳細介紹。 1. URL重寫組件url-rewrite2 微軟官方下載地址:http://www.iis.net/downloads/micro ...
  • 1.1 在yum伺服器上創建yum倉庫命令 1 mkdir -p /application/nginx/html/yum 2 cd /application/nginx/html/yum rz #上傳rpm包到此目錄 rz #上傳rpm包到此目錄 1.2 安裝createrepo軟體 1 yum i ...
  • 軟體環境:vmware10.0破解版 centos版本:6.4 1、啟動vmware,新建虛擬機,選擇自定義安裝 2,出現如下界面,保持預設,點擊下一步 3、這個步驟要特別註意,選擇“稍後安裝”,我們就可以對linux系統自定義 4,選擇2.6的內核 5,為虛擬機起個名字,選擇存放的位置,註意存放的 ...
  • 參考文檔: 本文涉及CMDBuild的安裝配置。 一.環境 1. 操作系統 os:CentOS-7-x86_64-Everything-1511, ip:10.11.4.186 2. 版本 jdk版本(cmdb推薦版本1.8,採用1.8.0_131):http://www.oracle.com/te ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...