一、nginx安装
1.先安装依赖包
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel gcc-c++ libtool make
2.下载解压nginx
tar zxvf nginx-1.18.0.tar.gz
3.进到解压好的nginx目录,编译安装
useradd nginx -s /sbin/nologin
cd nginx-1.18.0
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
4.启动nginx
/usr/local/nginx/sbin/nginx
ps -ef | grep nginx #查看进程
5.浏览器访问测试
http://192.168.19.11/
二、nginx平滑升级
认识平滑升级
有时候我们需要对Nginx版本进行升级以满足运维人员对其功能的需求,例如添加xxx模块,需要xxx功能,而此时Nginx又在跑着业务无法停掉,这时我们就只能平滑升级了。
平滑升级原理
Nginx服务接收到USR2信号后,将Nginx.pid文件添加.oldbin变成nginx.pid.oldbin文件;然后执行新版本Nginx服务器的二进制文件启动服务,如果新的服务启动成功,系统中将有新旧两个Nginx主进程共同提供Web服务,之后,需要向旧的Nginx服务进程发送WINCH信号,使旧的Nginx服务平滑停止,并删除Nginx.pid.oldbin文件。
Nginx信号简介
主进程支持的信号 |
TERM, INT: 立刻退出 |
QUIT: 等待工作进程结束后再退出 |
HUP: 重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程 |
USR1: 重新打开日志文件 |
USR2: 启动新的主进程,实现热升级 |
WINCH: 逐步关闭工作进程 |
进行平滑升级
1.当前环境
System:CentOS-7.5
Nginx:1.18.0
2.查看当前nginx版本号
/usr/local/nginx/sbin/nginx -v #查看nginx当前版本号
nginx version: nginx/1.18.0
/usr/local/nginx/sbin/nginx -V #查看nginx编译时执行的命令
--prefix=/usr/local/nginx/--with-http_stub_status_module --with-http_ssl_module
3.下载新版本Nginx并开始平滑升级
wget -c http://nginx.org/download/nginx-1.20.2.tar.gz #下载新版本
tar -xzf nginx-1.20.2.tar.gz #解压源码包
cd nginx-1.20.2
./configure --prefix=/usr/local/nginx/--with-http_stub_status_module --with-http_ssl_module #进入源码包内执行预编译
make #执行编译,切记不要安装也就是不要去执行 make install
4.对Nginx执行文件进行更新
cd /usr/local/nginx/sbin #进入nginx的执行文件目录内
mv nginx nginx.old #将旧版本Nignx执行文件备份为nginx.old
cp /root/nginx-1.20.2/objs/nginx . #将新版本Nginx执行文件移动到当前目录内
5.进行平滑重启
/usr/local/nginx/sbin/nginx -t
#检测新版本Nginx是否正常,正常为 successful
ps -ef|grep nginx #查看旧版本nginx进程
kill -USR2 4428
#向主进程发送USR2信号,Nginx会启动一个新版本的master进程和工作进程,和旧版一起处理请求
6.此时再次查看Nginx进程就发现有两个Nginx在工作
kill -WINCH 4428 #向原Nginx主进程发送WINCH信号,它会逐步关闭旗下的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理
kill -9 2248 #待退出完毕杀死旧版本Nginx主进程
/usr/local/nginx/sbin/nginx -v #查看升级完后的nginx版本
ouput:nginx version: nginx/1.20.2
Nginx平滑升级结束。。。