使用fpm制作nginx rpm包

在使用saltstack部署的时候,我们依赖公司自己的rpm包,编译的参数,启动的脚本都是自己定制的,然后打成rpm包 放入公司自己的yum仓库里。制作rpm包的方式很多 checkinstall spec文件,fpm使用很简单,主要介绍下

1.安装fpm

yum -y install ruby rubygems ruby-devel rpm-build
gem sources -a http://ruby.taobao.org/
gem sources --remove http://rubygems.org/
gem install fpm

2.编译nginx并创建虚拟目录

mkdir -pv /opt/nginx/{etc/rc.d/init.d,sysconfig}
tar -zxvf nginx-1.6.2.tar.gz
cd nginx-1.6.2
./configure --prefix=/usr/local/nginx --pid-path=/usr/local/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_dav_module --with-http_flv_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-debug --http-client-body-temp-path=/usr/local/nginx/client --http-proxy-temp-path=/usr/local/nginx/proxy --http-fastcgi-temp-path=/usr/local/nginx/fastcgi --http-uwsgi-temp-path=/usr/local/nginx/uwsgi --http-scgi-temp-path=/usr/local/nginx/scgi
make
make install DESTDIR=/opt/nginx

3.查看下/opt/nginx的目录结构

├── after_install.sh
├── after_remove.sh
├── etc
│   ├── rc.d
│   │   └── init.d
│   │       └── nginx
│   └── sysconfig
└── usr
    └── local
        └── nginx
            ├── conf
            │   ├── fastcgi.conf
            │   ├── fastcgi.conf.default
            │   ├── fastcgi_params
            │   ├── fastcgi_params.default
            │   ├── koi-utf
            │   ├── koi-win
            │   ├── mime.types
            │   ├── mime.types.default
            │   ├── nginx.conf
            │   ├── nginx.conf.default
            │   ├── scgi_params
            │   ├── scgi_params.default
            │   ├── uwsgi_params
            │   ├── uwsgi_params.default
            │   ├── vhost
            │   └── win-utf
            ├── html
            │   ├── 50x.html
            │   └── index.html
            ├── logs
            └── sbin
                └── nginx

这里我把已经更改过的nginx配置存放到了里面,以及nginx的启动脚本放到了/opt/nginx/etc/rc.d/init.d/下面,两个shell脚本一个是在安装完成后创建nginx运行用户,和卸载rpm包之后执行的操作

[email protected] ~# cat /opt/nginx/after_install.sh
#!/bin/bash
useradd www
[email protected] ~# cat /opt/nginx/after_remove.sh
#!/bin/bash
rm -rf /usr/local/nginx

nginx启动脚本如下:

 1 #!/bin/bash
  2 # chkconfig: 2345 80 12
  3 # processname: nginx
  4 # qq:455471484
  5 source /etc/init.d/functions
  6
  7
  8 [ -r "$SYSCONFIG" ] && source "$SYSCONFIG"
  9 RETVAL=0
 10 start() {
 11     echo -n $"Starting Nginx:"
 12     daemon /usr/local/nginx/sbin/nginx
 13     RETVAL=$?
 14     echo
 15     [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nginx
 16     return $RETVAL
 17 }
 18
 19 stop() {
 20    echo -n $"Stoping Nginx:"
 21    daemon kill -QUIT `cat /usr/local/nginx/nginx.pid`
 22    RETVAL=$?
 23    echo
 24    [ $RETVAL -eq 0 ] && rm -rf /var/lock/subsys/nginx
 25    return $RETVAL
 26 }
 27
 28 restart() {
 29    echo -n $"Restart Nginx:"
 30    daemon /usr/local/nginx/sbin/nginx -s reload
 31    RETVAL=$?
 32    echo
 33    return $RETVAL
 34
 35 }
 36
 37
 38 case "$1" in
 39    start)
 40       start
 41       ;;
 42    stop)
 43       stop
 44       ;;
 45    restart|reload)
 46       restart
 47       ;;
 48 esac
 49 exit $RETVAL

虚拟目录下的东西在你打完fpm之后文件都会跟里面的一样,也就是说,如果你们公司有自己的配置文件模板,可以预先直接打到rpm包里面,下面就可以使用fpm命令进行build了。fpm提供了很多参数,可以--help看下根据需求~

4.打包命令:

fpm -f -s dir -t rpm -n qding-nginx --epoch 0 -v1.6.2 --iteration 1.el6 -C /opt/nginx/ -p /root/ -d ‘openssl-devel‘ -d ‘gcc‘ -d ‘gcc-c++‘ -d ‘pcre-devel‘ -d ‘zlib-devel‘ --verbose --category ‘Development/Languages‘ --description ‘nginx applications‘ --url ‘nginx.org‘ --license ‘BSD‘ -m ‘bianji‘ --no-rpm-sign --after-install /opt/nginx/after_install.sh  --after-remove after_remove.sh --workdir /opt/nginx/ etc usr

我使用的参数说明:

FPM参数详解
Usage: fpm [options] 
 
-p, --package PACKAGEFILE        管理的软件包 
 
-n, --name PACKAGENAME           定义生成的软件包的名字 
 
-v, --version VERSION            定义生成的软件包的版本 
 
    --iteration ITERATION        为软件包设置 iteration值 (‘release‘ for RPM). 
 
    --epoch EPOCH                为软件包设置 epoch值 
 
-d, —depends DEPENDENCY          设置软件包的依赖关系 
 

-C DIRECTORY                     在搜索files前先进入该目录 
 
-t PACKAGE_TYPE                  设置目标包的类型 
 
-s SOURCE_TYPE                   设置需要转换的包类型 
--after-remote			 卸载后执行脚本
--after-install 安装后执行脚本

执行以下,这个输出还是很友好的:

fpm -f -s dir -t rpm -n qding-nginx --epoch 0 -v1.6.2 --iteration 1.el6 -C /opt/nginx/ -p /root/ -d ‘openssl-devel‘ -d ‘gcc‘ -d ‘gcc-c++‘ -d ‘pcre-devel‘ -d ‘zlib-devel‘ --verbose --category ‘Development/Languages‘ --description ‘nginx applications‘ --url ‘nginx.org‘ --license ‘BSD‘ -m ‘bianji‘ --no-rpm-sign --after-install /opt/nginx/after_install.sh  --after-remove after_remove.sh --workdir /opt/nginx/ etc usr
Setting workdir {:workdir=>"/opt/nginx/", :level=>:info}
Setting from flags: category=Development/Languages {:level=>:info}
Setting from flags: description=nginx applications {:level=>:info}
Setting from flags: epoch=0 {:level=>:info}
Setting from flags: iteration=1.el6 {:level=>:info}
Setting from flags: license=BSD {:level=>:info}
Setting from flags: maintainer=bianji {:level=>:info}
Setting from flags: name=qding-nginx {:level=>:info}
Setting from flags: url=nginx.org {:level=>:info}
Setting from flags: version=1.6.2 {:level=>:info}
Converting dir to rpm {:level=>:info}
Force flag given. Overwriting package at /root/qding-nginx-1.6.2-1.el6.x86_64.rpm {:level=>:warn}
Reading template {:path=>"/usr/lib/ruby/gems/1.8/gems/fpm-1.3.3/templates/rpm.erb", :level=>:info}
Running rpmbuild {:args=>["rpmbuild", "-bb", "--define", "buildroot /opt/nginx/package-rpm-build20150415-14369-365eos/BUILD", "--define", "_topdir /opt/nginx/package-rpm-build20150415-14369-365eos", "--define", "_sourcedir /opt/nginx/package-rpm-build20150415-14369-365eos", "--define", "_rpmdir /opt/nginx/package-rpm-build20150415-14369-365eos/RPMS", "--define", "_tmppath /opt/nginx/", "/opt/nginx/package-rpm-build20150415-14369-365eos/SPECS/qding-nginx.spec"], :level=>:info}
Executing(%prep): /bin/sh -e /opt/nginx/rpm-tmp.fFuA4s {:level=>:info}
Executing(%build): /bin/sh -e /opt/nginx/rpm-tmp.HMWMva {:level=>:info}
Executing(%install): /bin/sh -e /opt/nginx/rpm-tmp.N2vnXR {:level=>:info}
Processing files: qding-nginx-1.6.2-1.el6.x86_64 {:level=>:info}
Wrote: /opt/nginx/package-rpm-build20150415-14369-365eos/RPMS/x86_64/qding-nginx-1.6.2-1.el6.x86_64.rpm {:level=>:info}
Executing(%clean): /bin/sh -e /opt/nginx/rpm-tmp.lyFWXl {:level=>:info}
Created package {:path=>"/root/qding-nginx-1.6.2-1.el6.x86_64.rpm"}

build成功之后可以在/root/下看到qding-nginx这个Rpm包。。。之后放入yum仓库里就可以提供使用啦。。。。。。。

时间: 2024-11-08 19:17:49

使用fpm制作nginx rpm包的相关文章

FPM制作nginx rpm包

fpm介绍: FPM功能简单说就是将一种类型的包转换成另一种类型. FPM的github:https://github.com/jordansissel/fpm fpm常用参数: -s          指定源类型 -t          指定目标类型,即想要制作为什么包 -n          指定包的名字 -v          指定包的版本号 -C          指定打包的相对路径  Change directory to here before searching forfiles

Fpm 之 Nginx rpm 包制作

Fpm 之 Nginx rpm 包制作 一.下载nginx编译安包机器上 wget http://nginx.org/download/nginx-1.12.2.tar.gz 二.安装nginx的编译所需的依赖包 yum -y install pure lib gcc-c++ openssl openssl-devel 三.编译安装nginx tar -zxvf nginx-1.12.2.tar.gz cd nginx-1.12.2 ./configure --prefix=/app/nginx

FPM简介(定制rpm包)

FPM简介 fpm是生成rpm包的工具.rpm包的制作,采用fpm工具完成,FPM非常易用,此命令可以把rpm包的安装.卸载做得更加优雅,在安装前可以做一些准备工作,安装后可以做一些收尾工作,在卸载前也可以做一些准备,比如检测一下相应的服务是否停止了,在卸载软件再做一些扫尾的工作,只要把这些定义成一个个脚本,fpm中指定相应的选项即可轻松实现.FPM的github: https://github.com/jordansissel/fpm FPM安装 gem sources –a http://m

Fpm 之 Apache2 rpm 包定制

Fpm 之 Apache2 rpm 包定制 一.下载Apache2 的所需的安装编译包 apr包下载:(/app/software) wget http://mirror.bit.edu.cn/apache//apr/apr-1.6.3.tar.gz arp-util包下载:(/app/software) http://mirror.bit.edu.cn/apache//apr/apr-util-1.6.1.tar.gz httpd-2.4.33包下载:(/app/software) wget

Linux /centos 下nginx rpm包安装及配置

Centos下安装nginx rpm包                                                                                                                            www.169it.com 1 在nginx官方网站下载一个rpm包,下载地址是:http://nginx.org/en/download.html wget http://nginx.org/packages/c

fpm定制化RPM包之nginx rpm包的制作

1.安装ruby模块 # yum -y install ruby rubygems ruby-devel 2.添加阿里云的Rubygems仓库,国外资源会影响下载速度 gem sources -a http://mirrors.aliyun.com/rubygems/ http://mirrors.aliyun.com/rubygems/ added to sources 移除原生的ruby仓库 gem sources --remove http://rubygems.org/ 3.安装fpm

rpmbuile 制作drbd RPM包

drbd-8.4.3.tar.gz 源码编译制作rpm 包 解压tar -axf drbd-8.4.3.tar.gz./configure --enable-spec --with-km  ## --enable-spec           Rather than creating Makefiles, create an RPM spe## --with-km               Enable kernel module 如果编译出现 :configure: error: no ac

Centos下安装nginx rpm包

1 在nginx官方网站下载一个rpm包,下载地址是:http://nginx.org/en/download.html wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm 2 安装这个rpm包 rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm 安装过程中会出现错误提示: warning: nginx-

快速制作salt rpm包

修改了salt源代码后,想要快速编译出rpm包来,可以基于salt的src.rpm包来. 前期准备 salt-2014.7.1-1.el7.src.rpm   # salt的源码包和spec文件 rpm-build.rpm                      # 编译rpm的工具 修改代码 rpm -ivh salt-2014.7.1-1.el7.src.rpm # 会在当前目录下生成rpmbuild目录 ll rpmbuild/ total 2 drwxr-xr-x 2 root roo