Nginx 版本平滑升级 && 模块升级

Nginx 版本平滑升级 && 模块升级

< 只限编译安装的nginx >

准备实验环境 一台服务器A

第一步 给A 编译安装nginx1.16版本

1 安装编译环境

​ yum -y install gcc gcc-c++

2 安装pcre软件包(使nginx支持http rewrite模块)

​ yum install -y pcre pcre-devel

3、安装openssl-devel(使nginx支持ssl)

​ yum install -y openssl openssl-devel

4、安装zlib

​ yum install -y zlib zlib-devel

5、创建用户nginx

​ useradd nginx

6 下载nginx 1.16的压缩包 并解压

​ 然后再下载一个v0.61的压缩包这是一个模块 # 这个模块可下可不下
​ wget http://nginx.org/download/nginx-1.16.0.tar.gz
​ tar xzf nginx-1.16.0.tar.gz #这里可以解压到指定的目录下如 后面加 -C /usr/local/
​ wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz && tar xf v0.61.tar.gz

7 cd 到解压后的nginx-1.16.0 目录里面

​ cd nginx-1.16.0

8 编译参数解答(模块)

–add-module=./echo-nginx-module-0.61 --add-module=./ngx_req_status-master 这是添加前面下载的v0.61这个压缩包的模块

如果前面有下载v0.61的包并解压了 将# 去掉就行 如果没去掉 #号就会将后面添加的内容注释掉了 就不会条件v0.61的模块

      ./configure --prefix=/usr/local/nginx --group=nginx --user=nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-stream # --add-module=./echo-nginx-module-0.61 --add-module=./ngx_req_status-master
9 开始 编译 安装

make && make install
make根据Makefile中规定的内容进行编译,生成的可执行文件放在当前目录或某个子目录
makeinstall将make生成的可执行文件安装到系统目录中,如/usr/bin

这个时候还没有nginx 这个命令 可以做个软连接
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
用 nginx 这个命令启动 然后这个时候可能会报个错 说 没有 /tmp/nginx 这个目录 创建一个就好了
mkdir /tmp/nginx

========================================================================================================================

第二步 将Nginx1.16 平滑升级到 1.18

1 下载nginx 1.18版本的压缩包 并将其解压

wget http://nginx.org/download/nginx-1.18.0.tar.gz && tar xzf nginx-1.18.0.tar.gz

2 然后 查看1.16版本模块

将模块复制 找个文本粘贴 将 configure arguments: --prefix 这里改为 ./configure --prefix 后面的不变

我这里的模块没有添加 v0.61 的模块 因为后面还要再做模块平滑升级

/usr/local/nginx/sbin/nginx -V
./configure --prefix=/usr/local/nginx --group=nginx --user=nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-stream

3 将上面复制的编译参数 (也就是模块)

在nginx1.18.0目录里面执行一下 记住这里不能make install 只能make 详情在第一步 安装里面有
cd nginx-1.18.0
./configure --prefix= … #后面的内容就没粘贴下来了
make

4 查看一下当前编译的这个是不是1.18版本

cd nginx-1.18.0/objs/
./nginx -V #这里只能用./nginx ./ 就是当前目录的nginx

5 将1.18.0 版本的可执行文件nginx 拷贝到系统目录 /usr/local/nginx/sbin/ 下

cd /usr/local/nginx/sbin/
mv nginx nginx.old # 这里是将1.16版本的可执行文件给back掉
cp /opt/nginx-1.18.0/objs/nginx ./ #将1.18版本的nginx 拷贝到当前目录

6、测试新版本的nginx是否正常

/usr/local/nginx/sbin/nginx -t

7、给nginx发送平滑迁移信号(若不清楚pid路径,请查看nginx配置文件)

kill -USR2 cat /var/run/nginx.pid

8、查看nginx pid,会出现一个nginx.pid.oldbin

ll /var/run/nginx.pid*
-rw-r–r-- 1 root root 5 Jul 1 11:29 /var/run/nginx.pid
-rw-r–r-- 1 root root 5 Jul 1 09:54 /var/run/nginx.pid.oldbin

9、从容关闭旧的Nginx进程

kill -WINCH `cat /var/run/nginx.pid.oldbin

10、此时不重载配置启动旧的工作进程

kill -HUP `cat /var/run/nginx.pid.oldbin

11、结束工作进程,完成此次升级 验证Nginx是否升级成功

kill -QUIT cat /var/run/nginx.pid.oldbin

/usr/local/nginx/sbin/nginx -V

==============================================================================================================================================

第三步 Nginx 模块升级

######(添加模块)<基于上面的操作>

1 重新解压

将nginx1.18.0目录 删除 再解压一个新的nginx.1.18.0目录

2 编译

下载 v0.61.tar.gz 压缩包 并将其解压
/usr/local/nginx/sbin/nginx -V 查看正在运行的nginx 的模块 然后将其复制到一个编辑器

将v0.61 这个解压出来的目录添加上去 --add-module 这是添加模块的 后面跟上你解压 v0.61.tar.gz 出来的目录名 和路径

然后进入 新解压的nginx.1.18.0 的目录里面
./configure --prefix=/usr/local/nginx --group=nginx --user=nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-stream --add-module=/opt/echo-nginx-module-0.61

然后 make 编译一下 记住不能make install 上面有解释

3 替换

将以前的系统目录下的 nginx 删除 然后将刚编译好的可执行文件nginx 拷贝过去
rm -rf /usr/local/nginx/sbin/nginx
cp /opt/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/

4 检测

nginx -v 或 ./nginx -v 查看当前nginx 的模块

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值