淮南做网站的公司,都匀网站制作,淮北市建设安全监督站网站,云南省建设工程网站1、Nginx版本#xff0c;在实际的业务场景中#xff0c;需要使用软件新版本的功能、特性。就需要对原有软件进行升级或重装系统。
Nginx的版本需要升级迭代。那么如何进行升级呢#xff1f;线上服务器如何升级#xff0c;我们选择稳定版本。
从nginx的1.14版本升级到ngin…
1、Nginx版本在实际的业务场景中需要使用软件新版本的功能、特性。就需要对原有软件进行升级或重装系统。
Nginx的版本需要升级迭代。那么如何进行升级呢线上服务器如何升级我们选择稳定版本。
从nginx的1.14版本升级到nginx的1.16版本。
平滑升级。 信号参数 信号参数
kill命令传输信号给进程nginx的主进程。 TERM, INT快速退出强制退出当前的请求不执行完成就退出 -s stop QUIT 优雅退出执行完当前的请求后退出 -s quit HUP 重新加载配置文件用新的配置文件启动新worker进程并优雅的关闭旧的worker进程 -s reload USR1 重新打开日志文件 -s reopen USR2 平滑的升级nginx二进制文件 拉起一个新的主进程 旧主进程不停止 WINCH 优雅的关闭worker进程 我们平滑升级USR2这个信号要注意下。
以上几个信号命令都是发给nginx的master主进程。 语法
[rootserver01 ~]# ps aux |grep nginx
root 937 0.0 0.1 46156 2100 ? Ss 09:41 0:00 nginx: master process /usr/local/nginx/sbin/nginx
www 26449 0.0 0.0 46392 1956 ? S 17:32 0:00 nginx: worker process
root 26474 0.0 0.0 112816 972 pts/0 S 18:11 0:00 grep --colorauto nginx
[rootserver01 ~]# kill -TERM 937
[rootserver01 ~]# ps aux |grep nginx
root 26480 0.0 0.0 112812 972 pts/0 S 18:11 0:00 grep --colorauto nginx不是所有的软件都支持kill信号方面的内容。要看软件是怎么写出来的。
nginx是支持这几个的。 WINCH
[rootserver01 ~]# ps aux |grep nginx
root 26534 0.0 0.0 46016 1348 ? Ss 18:13 0:00 nginx: master process /usr/local/nginx/sbin/nginx
www 26539 0.0 0.0 46392 1920 ? S 18:17 0:00 nginx: worker process
root 26541 0.0 0.0 112812 968 pts/0 S 18:17 0:00 grep --colorauto nginx
[rootserver01 ~]# kill -WINCH 26534
[rootserver01 ~]#
[rootserver01 ~]# ps aux |grep nginx
root 26534 0.0 0.0 46016 1348 ? Ss 18:13 0:00 nginx: master process /usr/local/nginx/sbin/nginx
root 26543 0.0 0.0 112812 972 pts/0 S 18:18 0:00 grep --colorauto nginx
[rootserver01 ~]#我们可以看到worker进程被关闭了。那么这个时候访问页面访问不了。说明worker不工作nginx就不工作。这个是比较特殊的场景。
[rootserver01 ~]# kill -HUP 26534
[rootserver01 ~]#
[rootserver01 ~]# ps aux |grep nginx
root 26534 0.0 0.1 46152 2064 ? Ss 18:13 0:00 nginx: master process /usr/local/nginx/sbin/nginx
www 26544 0.0 0.0 46528 1972 ? S 18:21 0:00 nginx: worker process
root 26546 0.0 0.0 112812 972 pts/0 S 18:21 0:00 grep --colorauto nginx我们通过kill -HUP PID命令来重新加载配置文件启动新的worker进程优雅地关闭旧的worker进程。 [rootserver01 ~]# ps aux |grep mysqld
root 918 0.0 0.0 115544 1696 ? S 09:41 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir/usr/local/mysql/data --pid-file/usr/local/mysql/data/server01.pid
mysql 1073 0.0 22.4 968628 454524 ? Sl 09:41 0:05 /usr/local/mysql/bin/mysqld --basedir/usr/local/mysql --datadir/usr/local/mysql/data --plugin-dir/usr/local/mysql/lib/plugin --usermysql --log-error/usr/local/mysql/data/server01.err --pid-file/usr/local/mysql/data/server01.pid
root 26561 0.0 0.0 112816 972 pts/0 S 18:25 0:00 grep --colorauto mysqld
[rootserver01 ~]# kill -QUIT 918
[rootserver01 ~]# ps aux |grep mysqld
root 918 0.0 0.0 115544 1696 ? S 09:41 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir/usr/local/mysql/data --pid-file/usr/local/mysql/data/server01.pid
mysql 1073 0.0 22.4 968628 454524 ? Sl 09:41 0:05 /usr/local/mysql/bin/mysqld --basedir/usr/local/mysql --datadir/usr/local/mysql/data --plugin-dir/usr/local/mysql/lib/plugin --usermysql --log-error/usr/local/mysql/data/server01.err --pid-file/usr/local/mysql/data/server01.pid
root 26563 0.0 0.0 112816 972 pts/0 S 18:26 0:00 grep --colorauto mysqld
[rootserver01 ~]#我们可以看到-QUIT这个信号mysqld就不支持。但是php-fpm又支持。 在脚本中stop对应的kill -QUIT优雅退出。 重新安装
1停止掉服务删除编译的安装的软件包和源码包
2重新解压编译安装即可
注意如果需要请备份配置文件和网站目录里的资源文件。
一些重要的东西网站文件和配置文件要进行备份。 平滑升级
升级软件版本之后需要启动新的版本启动不了端口已被占用。
如果直接把旧版本的服务停止掉会影响线上业务的使用。
最佳解决办法①旧的不先停掉②新的又可以起来③旧的和新的同时提供服务旧的请求完成之后就停掉旧进程-USR2 平滑启动一个进程平滑升级-WINCH 优雅的关闭子进程-QUIT 优雅关闭主进程 shell tar xvf nginx-1.16.0.tar.gz
shell cd nginx-1.16.0
shell ./configure --prefix/usr/local/nginx --userwww --groupwww --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module
shell make make install
升级新版本需要把软件的安装路径指定到旧版本上。
以上操作完成之后会把原来的旧版本备份为nginx.old 新旧版本同时运行
kill -USR2 主进程号 停止掉旧进程
查看旧的主进程号并使用kill -WINCH 优雅的关闭的子进程,再关闭旧的主进程
shell kill -WINCH 旧的主进程号
shell kill -QUIT 旧的主进程号 [rootserver01 nginx-1.24.0]# cat Makefiledefault: buildclean:rm -rf Makefile objs.PHONY: default cleanbuild:$(MAKE) -f objs/Makefileinstall:$(MAKE) -f objs/Makefile installmodules:$(MAKE) -f objs/Makefile modulesupgrade:/usr/local/nginx/sbin/nginx -tkill -USR2 cat /usr/local/nginx/logs/nginx.pidsleep 1test -f /usr/local/nginx/logs/nginx.pid.oldbinkill -QUIT cat /usr/local/nginx/logs/nginx.pid.oldbin说明
1先对配置文件进行测试
2然后平滑启动一个新nginx进程。
3判断下旧进程是否存在
4然后再将旧nginx进程进行优雅退出。 在nginx中默认提供了平滑升级的操作。
#注意先configure 在nginx源码包执行
shell make install make upgrade
注意要make install make upgrade。