Nginx版本升级
Nginx版本升级
nginx版本升级:从nginx1.16.1升级到nginx1.18.0,以及升级失败如何回退
Nginx安装
安装Nginx所需要环境
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel |
创建nginx目录
mkdir -p /usr/local/nginx |
下载nginx包
wget https://nginx.org/download/nginx-1.18.0.tar.gz |
解压缩
tar -zxvf nginx-1.18.0.tar.gz |
进入目录并配置nginx
cd nginx-1.18.0/ |
带https模块
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module |
--prefix
属于nginx编译后目录位置
编译&安装
make |
make install |
启动/关闭nginx服务
在
/usr/local/nginx/sbin
目录下
./nginx |
nginx -s reload |
#快速关闭nginx(立即关闭不等待未处理完请求) |
Nginx服务启动成功截图
Nginx 注册为系统服务
创建nginx服务
vi /etc/systemd/system/nginx.service |
[Unit] |
重新加载配置文件
systemctl daemon-reload |
配置nginx开机启动
systemctl enable nginx |
启动nginx命令
systemctl start nginx |
nginx的其他命令
systemctl status nginx |
问题记录
nginx: [error] invalid PID number ““ in “/run/nginx.pid“
几种方法解决Nginx错误:nginx: [error] invalid PID number ““ in “/run/nginx.pid“
方法一
nginx -c /etc/nginx/nginx.conf |
nginx -s reload |
方法二
ps -aux | grep "nginx: master process" |
echo 主进程PID > /run/nginx.pid |
Nginx版本升级
查看旧版本Nginx1.18
版本
注意
V
大写
./nginx -V |
以下是旧的nginx配置,在新的nginx配置需要如下参数项:
configure arguments:
--prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
(ps:截图来源其他nginx服务器配置,仅参考)
配置新的Nginx1.24
版本
新下载的
Nginx1.24
在执行./configure
的时候--prefix
指定的目录是需要指向旧的Nginx1.18
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module |
执行编译
注意:仅执行编译
make
,升级不需要执行make install
命令
#make编译之后,在nginx1.24的objs目录下才有nginx执行文件 |
平滑升级,将旧Nginx1.18的文件备份
此处操作在目录:
/usr/local/nginx
下
cp nginx{,.bak} |
使用新的Nginx1.24
的nginx文件强制覆盖旧的Nginx1.18
的nginx文件
此处操作在目录
nginx-1.24.0/objs
下
cp -f nginx /usr/local/nginx/sbin/nginx |
查看当前nginx进程
此处nginx进程属于旧的
Nginx1.18
ps aux | grep nginx |
对nginx的父进程号发送USR2
信号
设定新的子进程开始接收用户的访问请求,旧的不再接受用户的访问请求
kill -USR2 8559 |
再次查看nginx进程
ps aux | grep nginx |
可查看旧进程依旧处于监听状态
(当前步骤可忽略,仅表示当前旧nginx进程依然存在)
lsof -p 8559 | grep LISTEN |
关闭旧nginx进程
worker
进程被关闭
kill -WINCH 8559 |
确定升级没有任何问题的话,把master进程给关闭
注意:是确认无误后才执行操作,否则将导致平滑升级无法回退情况发生
kill -QUIT 8559 |
再次查看Nginx版本
此处操作在目录:
/usr/local/nginx
下
./nginx -V |
Nginx升级失败,版本回退
强制覆盖nginx文件,使用旧的版本的nginx
此处操作在目录:
/usr/local/nginx
下mv nginx.bak nginx
旧版本nginx进程发送HUP信号
注意: 这是旧版本的nginx进程pid号
kill -HUP 8559
截图为旧nginx
已唤起的worker
进程
- 新版本的服务停止接收用户请求
kill -USR2 8603 |
- 进行新版本服务进程的关闭
kill -WINCH 8603 |
- kill掉nginx新进程
kill -QUIT 8603 |