zoukankan      html  css  js  c++  java
  • FPM工具 实战定制nginx包

    FPM主要特点: 把一种包打包成另一种包的格式


    支持的源类型包
    DIR 将目录打包成所需要的类型,可以用于源码编译的安装包.
    RPM    对rpm进行转换
    gem    对rubygem包进行转换.
    python    将python模块打包成相应的类型

    支持的目标类型包格式:
    RPM    转换为RPM包
    deb     转换为deb包
    solaris    转换为solaris包
    puppet   转换为puppet包


    安装FPM工具:
        fpm是使用ruby语言编写的,因此系统环境需要ruby这个软件,并且版本号需要大于1.8.5

    ## 安装ruby模块
    yum  -y install ruby rubygems ruby-devel     ## 安装ruby的模块,ruby模块需要大于1.8.5

    ## 添加阿里云的rubygems仓库,移除原生的yum仓库
    gem sources -a  http://mirrors.aliyun.com/rubygems/            ##增加阿里云的仓库gem sources --remove  http://rubygems.org                                 ##移除原有的仓库

    ##安装FPM工具
    gem install fpm -v 1.3.3    
     ##指定安装1.3.3 版本,我们需求不大,只要能打包就足够了,没必要追求高版本

     
    这里有可能会出现错误, 系统会提示: 安装 fpm 1.3.3版本之前需要首先安装ruby1.9.18
    #为解决ruby版本过低1.8.7 降低json 和ffi 版本  所以这里首先要安装 以下两个软件后继续

    可能的报错信息:
    [root@localhost ~]# gem install fpm -v 1.3.3
    ERROR: Error installing fpm:
     json requires Ruby version >= 1.9.

    遇到以上错误请先安装以下两个软件,然后继续安装fpm1.3.3:
    gem install json -v 1.8.3
    gem install ffi -v 1.9.18

    -----------------------------------------------------------------------------------------------------------------
    以上软件都安装好后 开始进行 实战定制nginx包

    环境的准备:
    1. 创建目录 /application/tools/
    1 .系统环境:    CentOS release 6.7 (Final)
    2. 内核版本:    2.6.32-573.el6.x86_64
    3. 关闭selinux 
    4.清空本机已经有的yum缓存
    (find /var/cache/ 0type f -name "*.rpm")
    5. 上传nginx软件包到 /application/tools/ 目录   ##(需要有lrzsz软件, yum -y install lrzsz  安装上传软件)
    如果是实验环境 请在这里做个快照 以备恢复

    6.开启yum缓存
     sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf  
    更改为:

    7.  查找有没有多余的rpm报缓存,排除一些不必要的干扰包

    ----------------------------------------------------------------------------

    1.  编译安装nginx (就安装我们上传的1.6.3版本)
     yum -y install pcre-devel openssl-devel   #安装必备的包

    2. 装完后另存这些rpm包,因为系统的不一致,所需要的安装包也就不同,找到收集这些包..
     find /var/cache/ -type f -name "*.rpm" 

    [root@localhost ~]# find /var/cache/ -type f -name "*.rpm"      
    /var/cache/yum/x86_64/6/base/packages/libcom_err-1.41.12-23.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/openssl-1.0.1e-57.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/e2fsprogs-libs-1.41.12-23.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/libsepol-devel-2.0.41-4.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/openssl-devel-1.0.1e-57.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/libcom_err-devel-1.41.12-23.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/keyutils-libs-devel-1.4-5.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/libss-1.41.12-23.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/libselinux-utils-2.0.94-7.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/krb5-devel-1.10.3-65.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/libkadm5-1.10.3-65.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/libselinux-devel-2.0.94-7.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/krb5-libs-1.10.3-65.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/pcre-devel-7.8-7.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/e2fsprogs-1.41.12-23.el6.x86_64.rpm
    /var/cache/yum/x86_64/6/base/packages/libselinux-2.0.94-7.el6.x86_64.rpm

    3. 查找这些包 然后移动到/tmp 目录  (移动前请确保/tmp 目录是空的)
    find /var/cache/ -type f -name "*.rpm" | xargs cp -t /tmp

    4. 把这些包打包起来并下载到本地
     cd / && tar zcf nginx_yum.tar.gz tmp/*.rpm    ##打包放入了根目录
        [root@localhost /]# ls /nginx_yum.tar.gz
        /nginx_yum.tar.gz


    5.  创建nginx账户
    [root@localhost tools]# useradd nginx -M -s /sbin/nologin

    6.解压软件包
     tar xf nginx-1.6.3.tar.gz 

    7.编译安装:
    mkdir /application/nginx-1.6.3 -p
    cd /application/tools/
    tar xf nginx-1.6.3.tar.gz
    cd nginx-1.6.3
    ./configure --prefix=/application/nginx-1.6.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
    make && make install

    8.创建软连接(疑问,这里能启动吗?为什么我像启动没能启动??)
    ln -s /application/tools/nginx-1.6.3 /application/nginx

    9.编写脚本
    vi nginx.sh
    --------------------------------------
    #!/bin/bash
    useradd nginx -M -s /sbin/nologin
    ln -s /application/nginx-1.6.3/ /application/nginx
    --------------------------------------


    10.开始fpm打包
    fpm -s dir -t rpm -n nginx -v 1.6.3 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f  /application/nginx-1.6.3
    ----------------------------
    成功结果:

    查看这个包:
    [root@localhost ~]# ls -hl nginx-1.6.3-1.x86_64.rpm
    -rw-r--r-- 1 root root 2.2M Apr 14 02:50 nginx-1.6.3-1.x86_64.rpm

    显示这个 代表打包完成了
    ----------------------------------------------------------检查安装结果: ---------------------------------------------

    报错 说需要两个依赖包 一个是 pcre-devel   一哥是 openssl-devel  
    解决办法: 
    1.  yun 来安装这些依赖包

    2.  rpm 来安装这两个依赖包 

    3. 如果已经有这些依赖包 就可以 使用 rpm -ivh -aid *.rpm 来安装

    ------------------------------------------------------------------------------------

    ## 打包的注意事项:
    rpmbuild软件不存在的时候 打包就会失败
    命令地址: /usr/bin/rpmbuild

    如果没有rpmbuild命令 则需要安装这个命令 
    yum -y install rpmbuild


    回顾rpm包的常用命令组合
    man rpm ## 获取帮助
    rpm -qpi nginx-1.6.3-1.x86_64.rpm ## 查看安装包的信息

    rpm -qpl nginx-1.6.3-1.x86_64.rpm ## 查看安装包的内容

    rpm -qpR nginx-1.6.3-1.x86_64.rpm ## 查看安装包的依赖
       
    ## 查看rpm包带的执行脚本,执行脚本不是以文件形式放在rpm包中的
    rpm -qpi nginx-1.6.3-1.x86_64.rpm ## 查看安装包的信息
       
    rpm -ivh nginx-1.6.3-1.x86_64.rpm ## 安装rpm包

    rpm -ivh --aid *.rpm # --aid 参数 解决rpm包循环依赖的问题,即当前目录所有互相依赖的rpm包 可以用这种办法

    安装报错处理
    [root@chenleilei ~]# rpm -ivh nginx-1.6.3-1.x86_64.rpm
    error: Failed dependencies:
     pcre-devel is needed by nginx-1.6.3-1.x86_64
     openssl-devel is needed by nginx-1.6.3-1.x86_64


            解决办法:
            1. yum 安装 这两个包
            2. rpm -ivh openssl-devel-1.0.1e-42.e16.x86_64.rpm
                rpm -ivh pcre-devel-7.8-7.e16.x86_64.rpm

  • 相关阅读:
    HUAWEI防火墙双出口据链路带宽负载分担
    HUAWEI防火墙双出口根据链路优先级主备备份
    HUAWEI防火墙双出口环境下私网用户通过NAPT访问Internet
    如何实现IP话机接入交换机?
    WLAN-AC+AP,动态负载均衡用户量,避免某一个AP负载过重
    WLAN-AC+AP射频一劳永逸的调优方式
    中大型企业有线无线用户统一接入(实施笔记)
    js获取当前时间,返回日期yyyy-MM-dd
    cookie和token都存在在请求头header中,有什么区别,为什么建议使用token?
    vue中cookie的使用——将cookie放在请求头header中
  • 原文地址:https://www.cnblogs.com/superlinux/p/402a85cc533f2b43e11e47ccd2a284a2.html
Copyright © 2011-2022 走看看