平滑升级nginx
## 先查看老版本 nginx 的编译参数,我这里没有。
[root@centos-linux home]# cd /usr/local/nginx/sbin/
[root@centos-linux sbin]# ./nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments: --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-http_realip_module
## 下载最新的稳定版本
[root@centos-linux sbin]# wget http://nginx.org/download/nginx-1.18.0.tar.gz
[root@centos-linux home]# tar -zxvf nginx-1.18.0.tar.gz
## 进入 nginx 源码目录,按照配置参数 configure make,注意这里不要 make install
[root@centos-linux home]# cd nginx-1.18.0
[root@centos-linux nginx-1.18.0]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-http_realip_module
[root@centos-linux nginx-1.18.0]# make
## 备份原来的 nginx 二进制文件
[root@centos-linux nginx-1.18.0]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx16.old
## 将刚刚编译的新的 nginx 二进制文件放到 sbin 目录下
[root@centos-linux nginx-1.18.0]# cp objs/nginx /usr/local/nginx/sbin/
[root@centos-linux nginx-1.18.0]# cd /usr/local/nginx/sbin/
[root@centos-linux sbin]# ls
nginx nginx16.old
## 找到原来的 nginx 进程号,发送 USR2 命令
[root@centos-linux sbin]# cd ../logs/
## 此时旧的Nginx主进程将会把自己的进程文件改名为.oldbin,然后执行新版 Nginx
[root@centos-linux logs]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
## 关闭原来的 nginx 进程
[root@centos-linux logs]# ls
[root@centos-linux logs]# access.log error.log nginx.pid nginx.pid.oldbin
[root@centos-linux logs]# kill -QUIT `cat nginx.pid.oldbin`
## 查看新版本的 nginx 信息
[root@centos-linux nginx-1.18.0]# cd /usr/local/nginx/sbin/
[root@centos-linux sbin]# ./nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-http_realip_module
附录:
安装 nginx 需要的库
[root@centos-linux home]# yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel