概述
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 的模块
最后
以上就是呆萌橘子为你收集整理的Nginx 版本平滑升级 && 模块升级Nginx 版本平滑升级 && 模块升级的全部内容,希望文章能够帮你解决Nginx 版本平滑升级 && 模块升级Nginx 版本平滑升级 && 模块升级所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复