1.1 快速部署方案

✔ 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案。

解答:

  1.tar 打包 先编译安装 打包--》分发--》解包(比如 mysql 打包后直接就可以使用

  2.SaltStack,puppet,ansible

  3.定制 rpm yum 仓库 yum 安装

  4.openstack 虚拟机镜像和 docker 容器分发

1.2 回顾下安装软件的三种方式:

1、编译安装软件,优点是可以定制化安装目录、按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长。

2、yum安装软件,优点是全自动化安装,不需要为依赖问题发愁了,缺点是自主性太差,软件的功能、存放位置都已经固定好了,不易变更。

===>如果你现在还为是使用编译安装软件还是使用yum安装软件发愁,那你就out了。

3、编译源码,根据自己的需求做成定制RPM包–>搭建内网yum仓库–yum安装。结合前两者的优点,暂未发现什么缺点。可能的缺点就是RPM包的通用性差,只能适用于本公司的环境。另外一般人不会定制RPM包。这是中大型互联网企业运维自动化的必要技能。这里也不介绍rpm的概念,想了解的朋友可以查看http://www.ibm.com/developerworks/cn/linux/l-rpm/。

1.3 FPM打包工具

FPM的作者是jordansissel

FPM的github:https://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工具

fpm是ruby写的,因此系统环境需要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/

# 安装fpm,gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的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 【实例】定制nginx的RPM包

  关于nginx的安装,可以参考:http://www.cnblogs.com/clsn/p/7750615.html

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=www --group=www --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/nginx

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. -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_install_devel.sh -f /application/nginx-1.10./
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 安装自动解决依赖关系

 #简易的搭建yum源的方法可以参考↓
http://www.cnblogs.com/clsn/p/7757868.html

FPM定制RPM包实践的更多相关文章

  1. 利用fpm定制rpm包

    环境说明 系统版本    CentOS 6.9 x86_64 软件版本    fpm-1.4.0 1.安装ruby环境 fpm利用ruby编程语言开发,先安装ruby的环境 [root@m01 ~]# ...

  2. FPM定制RPM包

    安装FPM FPM是ruby写的打包工具,ruby版本要大于1.8.5 #安装ruby环境和gem包管理器 [root@test88 ~]# yum install -y ruby rubygems ...

  3. 自动化部署必备技能—部署yum仓库、定制rpm包

    部署yum仓库.定制rpm包 目录 第1章 扩展 - yum缓存 1.1 yum缓存使用步骤... 1 1.1.1 导言... 1 1.1.2 修改配置文件... 1 1.1.3 使用缓存... 1 ...

  4. 搭建yum仓库与定制rpm包

    笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 当我们自动化部署集群的时候,想要快速的安装所有服务,搭建yum仓库与定制rpm包是我们首先要做的 原创作品,转载请 ...

  5. 利用fpm制作rpm包

    使用fpm制作rpm包 安装如下 [root@web01 ~]# yum install -y gcc zlib zlib-devel wget http://ruby.taobao.org/mirr ...

  6. FPM简介(定制rpm包)

    FPM简介 fpm是生成rpm包的工具.rpm包的制作,采用fpm工具完成,FPM非常易用,此命令可以把rpm包的安装.卸载做得更加优雅,在安装前可以做一些准备工作,安装后可以做一些收尾工作,在卸载前 ...

  7. fpm 制作 rpm 包

    支持的 源类型包 ① dir : 将目录打包成所需要的类型, 可用于源码编译安装软件包 ② rpm : 对 rpm 包进行转换 ③ gem : 对 rubygem 包进行转换 ④ python : 将 ...

  8. linux系统之定制rpm包

    FPM打包工具 FPM的作者是jordansissel FPM的github:https://github.com/jordansissel/fpm FPM功能简单说就是将一种类型的包转换成另一种类型 ...

  9. fpm制作rpm包

    一.前言 在企业中我们有事安装软件包.部分都是源码安装,如nginx安装路径都已经固化了,但实际业务中,我们都是把软件包安装到固定目录下,不满足需要,这是其一.其二,编译安装很耗时,比如mysql,特 ...

随机推荐

  1. 如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)

    Rex-Ray 是一个优秀的 Docker volume driver,本节将演示其安装和配置方法. Rex-Ray 以 standalone 进程的方式运行在 Docker 主机上,安装方法很简单, ...

  2. 通过express搭建自己的服务器

    前言 为了模拟项目上线,我们就需要一个服务器去提供API给我们调用数据.这次我采用express框架去写API接口.所有请求都是通过ajax请求去请求服务器来返回数据.第一次用node写后端,基本就是 ...

  3. ThreadLocal的理解与应用场景分析

    对于Java ThreadLocal的理解与应用场景分析 一.对ThreadLocal理解 ThreadLocal提供一个方便的方式,可以根据不同的线程存放一些不同的特征属性,可以方便的在线程中进行存 ...

  4. PHP程序员40点陋习

    1.不写注释 2.不使用可以提高生产效率的IDE工具 3.不使用版本控制 4.不按照编程规范写代码 5.不使用统一的方法 6.编码前不去思考和计划 7.在执行sql前不执行编码和安全检测 8.不使用测 ...

  5. 简单的CSS颜色查看工具

    可以通过输入ARGB(A代表透明度)格式或者HEX格式查看颜色,也可以进行ARGB格式和者HEX格式转换,如下图 使用C#编写,我已将源代码压缩上传 下载地址:http://files.cnblogs ...

  6. asp.net(C#)利用QRCode生成二维码

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="QRCode.aspx.cs&q ...

  7. win10 uwp 如何拖动一个TextBlock的文字到另一个TextBlock

    我在堆栈网看到有人问 如何拖动一个TextBlock的文字到另一个TextBlock 于是看到一个大神给出的方法,下面我就来和大家说下如何拖动 一开始我们需要一个界面,就放两个TextBlock 一个 ...

  8. JAVA编程入门

    java最早是由Sun公司基于C++开发而成的新一代编程语言也是现行下的主流行编程语言,其原始的主要用于嵌入式开发.java的第一个版本为JDK1.0,到2017年已经升级到JAK1.9版本.java ...

  9. Android实现购物车功能

    如图: 主要代码如下: actvity中的代码: publicclassShoppingCartActivity extendsBaseActivity {      private List< ...

  10. flask + wtform + google storage

    项目需要使用 flask 上传.下载文件到 google storage 上, 搜了一圈没有能直接结合 wtform 使用的插件,所以动手造了个轮子. 只实现了基本的上传,下载的功能,后续可能会完善预 ...