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-1.12.2 --with-http_ssl_module --with-http_stub_status_module
make && make install

四、以下步骤为fpm包的制定步骤

1.在/app/nginx-1.12.2/目录下创建script目录
mkdir /app/nginx-1.12.2/script

2.创建一个nginx文件,以作启动服务脚本,vi nginx
#!/bin/bash  
# nginx Startup script for the Nginx HTTP Server  
#  
# chkconfig: - 85 15  
# description: Nginx is a high-performance web and proxy server.  
# It has a lot of features, but it's not for everyone.  
# processname: nginx  
# pidfile: /var/run/nginx.pid  
# config: /usr/local/nginx/conf/nginx.conf  
nginxd=/app/nginx-1.12.2/sbin/nginx  
nginx_config=/app/nginx-1.12.2/conf/nginx.conf  
nginx_pid=/var/run/nginx.pid  

RETVAL=0  
prog="nginx" 

# Source function library.  
. /etc/rc.d/init.d/functions  

# Source networking configuration.  
. /etc/sysconfig/network  

# Check that networking is up.  
[ ${NETWORKING} = "no" ] && exit 0  

[ -x $nginxd ] || exit 0  

# Start nginx daemons functions.  
start() {  

if [ -e $nginx_pid ];then 
   echo "nginx already running...." 
   exit 1  
fi  

   echo -n $"Starting $prog: " 
   daemon $nginxd -c ${nginx_config}  
   RETVAL=$?  
   echo  
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx  
   return $RETVAL  

}  

# Stop nginx daemons functions.  
stop() {  
        echo -n $"Stopping $prog: " 
        killproc $nginxd  
        RETVAL=$?  
        echo  
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid  
}  

# reload nginx service functions.  
reload() {  

    echo -n $"Reloading $prog: " 
 $nginxd -s reload  
    #if your nginx version is below 0.8, please use this command: "kill -HUP `cat ${nginx_pid}`" 
    RETVAL=$?  
    echo  

}  

# See how we were called.  
case "$1" in 
start)  
        start  
        ;;  

stop)  
        stop  
        ;;  

reload)  
        reload  
        ;;  

restart)  
        stop  
        start  
        ;;  

status)  
        status $prog  
        RETVAL=$?  
        ;;  
*)  
        echo $"Usage: $prog {start|stop|restart|reload|status|help}" 
        exit 1  
esac  

exit $RETVAL 
3.在该目录下创建一个server.sh的脚本,以做rpm安装后的后续执行工作,自动添加server 启动服务
#!/bin/bash

cp /app/nginx-1.12.2/script/nginx /etc/init.d/

chmod +x /etc/init.d/nginx

chkconfig --add nginx

chkconfig nginx on
4.fpm生成rpm包
fpm -s dir -t rpm -n nginx -v 1.12.2 -d 'pcre-devel,openssl-devel' --post-install /app/nginx-1.12.2/script/server.sh -f /app/nginx-1.12.2/ 

五、在其它服务器上,如需安装nginx,只需要运行以前命令

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

备注:localinstall 代表通过yum源解决依赖包,然后再安装rpm包,安装完后,就会在/app目录下生成nginx,并且chkconfig 服务已经添加nginx服务。