利用FPM打包nginx

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

利用FPM命令打nginx的RPM包

注意利用FPM命令打包的前提条件是此服务器下已按照自己需要编译安装好nginx服务
1、安装FPM命令
fpm 是 ruby写的因此系统环境需要ruby且版本必须大于1.8.5
[root@test~]# yum -y install ruby rubygems ruby-devel
查看当前ruby源
[root@test~]# gem source -l
添加国内源
[root@test~]# gem sources -a http://mirrors.aliyun.com/rubygems/
删除国外源
[root@test~]# gem sources --remove https://rubygems.org/利用国外源安装fpm 可能要失败
[root@test~]# gem source -u #更新源或者 不行就 -c
注如果出现报错说ruby版本必须大于2.4则需要做升级处理
[root@test~]# yum install rh-ruby24 -y
加载环境变量
[root@test~]# scl enable rh-ruby24 bash #加载环境变量
查看当前ruby版本
ruby -v
[root@test~]# gem install fpm -v 1.10.2 (-v指定安装版本可不指定 直接使用gem install fpm安装)
[root@test~]# gem -v (查看版本)
2、创建一个工作目录此目录会被fpm当成虚拟的根目录
[root@test~]# mkdir /root/work -p
把需要封装进RPM包的目录文件cp到/root/work下根据到时候安装的路径来规定目录结构/root/work其实就是到时候安装机器的/目录
[root@test~]# mkdir /root/work/usr/local -p
[root@test~]# mkidr /root/work/usr/lib/systemd/system -p
[root@test~]# cp -rp /usr/local/nginx /root/work/usr/local/
[root@test~]# cp -rp /usr/local/modsecurity /root/work/usr/local/
[root@test~]# cp -rp /usr/local/owasp-modsecurity-crs /root/work/usr/local/
[root@test~]# cp -rp /usr/lib/systemd/system/nginx.service /root/work/usr/lib/systemd/system/
3、使用fpm命令打包fpm就是个命令,没有使用-p参数时在哪里执行以下命令RPM包就会在当前路径下生成
fpm -f -s dir -t rpm -n nginx --epoch 0 -v1.18.0 --iteration 1.el7 -C /root/work/ -d ‘gcc-c++ flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel lmdb lmdb-devel libxml2 libxml2-devel ssdeep ssdeep-devel lua lua-devel gd-devel pcre pcre-devel zlib zlib-devel openssl openssl-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 --before-remove /opt/nginx/before_remove.sh --before-upgrade /opt/nginx/before_upgrade.sh --after-upgrade /opt/nginx/after_upgrade.sh --workdir /root/work/ usr
命令参数详解
-f: 第二次包时目录下如果有同名安装包存在则覆盖它
-s: 表示制作包的来源可以是dir目录也可以是rpm包或者deb包等等通常我们会用dir目录自定义编译
-t: 表示制作包的类型可以是rpm包或者deb包等等
-n: 指定包的名字 根据实际情况修改
-p: 打包好的RPM包放在哪里
–epoch: 第几次打包顺便写或者不用这个参数
-v: version值实际版本号
–iteration: release值发布序列号
-C: 进入到工作目录
-d: 依赖的软件包在这个参数里的依赖包都安装成功此RPM才能正常安装好否则安装不了
–description: 描述信息
–ur: 软件官网描述
–license: 指定license名称例如GPL(自由软件,BSD开源软件(这相当于2个阵营区别在于你使用GPL里的代码进行二次开发完成后的产品也就必须是GPL的东西BSD的意思是使用了BSD里的代码来修改但是你做好的东西就是属于你自己的不属于BSD的了你想给谁用或者不给谁用都由你自己决定
-m: 指定打包人员
–no-rpm-sign: 不使用rpm签名
–after-install: 包安装之后执行的脚本
–before-install: 包安装之前执行的脚本
–after-remove: 包卸载之后执行的脚本
–before-remove: 包卸载之前执行的脚本
–after-upgrade: 包更新之后执行的脚本[仅支持 deb 和 rpm 这两种包]
–before-upgrade: 包更新之前执行的脚本

nginx- 1.18.0- 1.el7. x86_64. rpm
| | | | |
软件名称 版本号 发布号 硬件平台 扩展名

卸载前脚本此脚本功能为在/usr/local/下创建个备份目录把老的nginx所有东西备份一份

[root@test nginx]# cat before_remove.sh   
#!/bin/bash
date=`date +%Y%m%d%H%M`
dirname=/usr/local/nginxbak$date
if [ ! -d  $dirname ];then
    mkdir $dirname  -p
fi

cp -a   /usr/local/nginx                    $dirname/
cp -a   /usr/local/modsecurity              $dirname/
cp -a   /usr/local/owasp-modsecurity-crs    $dirname/
cp -a   /usr/lib/systemd/system/nginx.service   $dirname/

卸载后脚本此脚本功能删除nginx的所有目录试验过卸载之后虽然老的路径下所有数据都没有了但是目录结构还在

[root@test nginx]# cat after_remove.sh
#!/bin/bash
rm -rf /usr/local/nginx
rm -rf /usr/local/modsecurity
rm -rf /usr/local/owasp-modsecurity-crs

安装后脚本创建用户nginx创建日志目录让nginx用户对所需要的安装目录日志目录等拥有权限

[root@test nginx]# cat after_install.sh
#!/bin/bash
file=/var/log/nginx
installdir=/usr/local/
logdir=/data/logs

id nginx &> /dev/null
if [ $? -ne 0 ];then
   useradd nginx -M -s /sbin/nologin
fi
chown nginx:nginx /usr/local/nginx -R
if [ ! -d $file ];then
    mkdir $file
fi
if [ ! -d $logdir ];then
    mkdir $logdir -p
fi
chown nginx:nginx $file  -R
chown nginx:nginx $logdir  -R

更新前脚本创建更新目录备份老nginx数据

[root@test nginx]# cat before_upgrade.sh
#!/bin/bash
date=`date +%Y%m%d%H`
dirname=/usr/local/nginxold$date
if [ ! -d  $dirname ];then
    mdkir $dirname  -p
fi

mv   /usr/local/nginx                    $dirname/
mv   /usr/local/modsecurity              $dirname/
mv   /usr/local/owasp-modsecurity-crs    $dirname/
mv   /usr/lib/systemd/system/nginx.service   $dirname/

更新后脚本替换nginx配置文件nginx.conf和conf.d

[root@test nginx]# cat after_upgrade.sh
#!/bin/bash
date=`date +%Y%m%d%H`
dirold=/usr/local/nginxold$date
dirnew=/usr/local
if [  -d  $dirname ];then

   /usr/sbin/cp -rp  $dirold/nginx/conf/nginx.conf           $dirnew/nginx/conf/                   
   /usr/sbin/cp -rp  $dirold/nginx/conf/conf.d               $dirnew/nginx/conf/
fi
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: nginx

“利用FPM打包nginx” 的相关文章