企业架构LNMP学习笔记10

news2024/11/27 16:36:41

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主进程。

语法:

[root@server01 ~]# 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 --color=auto nginx
[root@server01 ~]# kill -TERM 937
[root@server01 ~]# ps aux |grep nginx
root      26480  0.0  0.0 112812   972 pts/0    S+   18:11   0:00 grep --color=auto nginx

不是所有的软件都支持kill信号方面的内容。要看软件是怎么写出来的。

nginx是支持这几个的。

WINCH:

[root@server01 ~]# 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 --color=auto nginx
[root@server01 ~]# kill -WINCH 26534
[root@server01 ~]#
[root@server01 ~]# 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 --color=auto nginx
[root@server01 ~]#

我们可以看到worker进程被关闭了。那么这个时候访问页面访问不了。说明worker不工作,nginx就不工作。这个是比较特殊的场景。

[root@server01 ~]# kill -HUP 26534
[root@server01 ~]#
[root@server01 ~]# 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 --color=auto nginx

我们通过kill -HUP PID命令来重新加载配置文件,启动新的worker进程,优雅地关闭旧的worker进程。

[root@server01 ~]# 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 --user=mysql --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 --color=auto mysqld
[root@server01 ~]# kill -QUIT 918
[root@server01 ~]# 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 --user=mysql --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 --color=auto mysqld
[root@server01 ~]#

我们可以看到-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 --user=www --group=www --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 旧的主进程号

[root@server01 nginx-1.24.0]# cat Makefile

default:        build

clean:
        rm -rf Makefile objs

.PHONY: default clean

build:
        $(MAKE) -f objs/Makefile

install:
        $(MAKE) -f objs/Makefile install

modules:
        $(MAKE) -f objs/Makefile modules

upgrade:
        /usr/local/nginx/sbin/nginx -t

        kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
        sleep 1
        test -f /usr/local/nginx/logs/nginx.pid.oldbin

        kill -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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/968736.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据库】MySQL基础知识全解

系列综述: 💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于拓跋阿秀、小林coding等大佬博客进行的,每个知识点的修…

计算机的存储规则(ASCII,GBK,Unicode)

不爱生姜不吃醋⭐️⭐️⭐️ 声明: 🌻本文写的是关于计算机的存储规则 ❗️ 🌻看完之后觉得不错的话麻烦动动小手点个赞赞吧👍 🌻如果本文有什么错误的话欢迎在评论区中指正哦💗 🌻与其明天开始…

count(1)与count(*)的区别、ROUND函数

部分问题 1. count(1)与count(*)的区别2. ROUND函数3. SQL19 分组过滤练习题4. Mysql bigdecimal 与 float的区别5. 隐式内连接与显示内连接 (INNER可省略) 1. count(1)与count(*)的区别 COUNT(*)和COUNT(1)有什么区别? count(*)包括了所有…

【网络】路由配置实践1

网络实践-路由篇 本文使用vmware虚拟机进行路由表配置实践,通过配置路由表连接两个不同的网络,不涉及路由协议,全手动配置,旨在理解路由表的概念 网络规划: 准备三台centos7虚拟机,其中一台作为路由设备ro…

【个人博客系统网站】注册与登录 · 加盐加密验密算法 · 上传头像

【JavaEE】进阶 个人博客系统(3) 文章目录 【JavaEE】进阶 个人博客系统(3)1. 加盐加密验密算法原理1.1 md5加密1.2 md5验密1.3 md5缺漏1.4 加盐加密1.5 后端的盐值拼接约定1.6 代码实现1.6.1 加密1.6.2 验密1.6.3 测试 2. 博客…

探究IP路由的工作原理与路由表查找规则

文章目录 一、定义二、IP连通的前提三、路由表1. 作用2. 路由表字段内容3. 路由表查表规则4. 路由信息的来源5. 路由表写表规则6. 路由优先级 四、常用命令 首先可以看下思维导图,以便更好的理解接下来的内容。 一、定义 路由器是网络中负责将数据报文在不同IP网段…

css 左右宽固定,中间自适应——双飞翼布局

最近面试的时候遇到一个提问说,如何做到一个左右宽度固定,中间自适应的布局,我的答案不重要,重要的是不是面试官想听到的答案,这样问大概率他想听到的答案一定是双飞翼布局,所以今天就手敲一个双飞翼布局让…

设计模式-原则篇-01.开闭原则

简介 ​ 可以把设计模式理解为一套比较成熟并且成体系的建筑图纸,经过多次编码检验目前看来使用效果还不错的软件设计方案。适用的场景也比较广泛,在使用具体的设计模式之前先要学习软件设计的基础 “软件设计原则”,后面的23个设计模式都是…

Mybatis学习|多对一、一对多

有多个学生,没个学生都对应(关联)了一个老师,这叫(多对一) 对于每个老师而言,每个老师都有N个学生(学生集合),这叫(一对多) 测试环境…

《TCP/IP网络编程》阅读笔记--Socket类型及协议设置

目录 1--协议的定义 2--Socket的创建 2-1--协议族(Protocol Family) 2-2--Socket类型(Type) 3--Linux下实现TCP Socket 3-1--服务器端 3-2--客户端 3-3--编译运行 4--Windows下实现 TCP Socket 4-1--TCP服务端 4-2--TC…

B. Consecutive Points Segment - 思维

分析: 思维还是不够发散,太容易一种方法走到死了,一直在模拟一直WA,看完题解发现一个数组的整段所有数组共同移动的距离最多只能是2,那么a[0]到a[n - 1]就是之间应该有多少个数,然后本来需要n个连续的数&am…

【vue2第十一章】v-model的原理详解 与 如何使用v-model对父子组件的value绑定 和修饰符.sync

v-model的原理详解 v-model的本质就是一个语法糖,实际上就是 :value"msg" 与 input"msg $event.target.value" 的简写。 :value"msg" 从数据单向绑定到input框,当data数据中的msg内容一旦改变,而input框数据…

yum 、rpm、yumdownloader、repotrack 学习笔记

1 Linux 包管理器概述 rpm的使用: rpm -ivh filename.rpm#这列出该packageName(包名)安装的所有文件列表。 rpm -ql packageName #查询已安装的该packageName的详细信息,包括版本、发布日期等。 rpm -qi packageName #列出该pac…

剑指 Offer 62. 圆圈中最后剩下的数字(简单)

题目&#xff1a; class Solution { public:int lastRemaining(int n, int m) {int pos 0;for(int i2;i<n;i){pos (posm)%i;}return pos;} };作者&#xff1a;想吃火锅的木易 链接&#xff1a;详细题解 来源&#xff1a;力扣&#xff08;LeetCode&#xff09;

哪些存储设备的数据需要注意,防止误删除或者格式化丢失?

以下是一些存储设备的数据要注意&#xff0c;防止误删除或者格式化丢失&#xff1a; 1.硬盘&#xff1a;存储重要数据时要备份&#xff0c;避免硬盘故障、误格式化等情况导致数据丢失。 2.USB闪存驱动器&#xff1a;在拔出USB闪存驱动器前&#xff0c;应该先进行“安全删除”…

Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作

Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作 目录 Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作 一、简单介绍 二、汉化操作 附录&#xff1a; 一、Install from URL 中出现 Failed to connect to 127.0.0.1 port 7890: Connection refused 错误&#xf…

Nodejs 第十四章(process)

process 是Nodejs操作当前进程和控制当前进程的API&#xff0c;并且是挂载到globalThis下面的全局API API 介绍 1. process.arch 返回操作系统 CPU 架构 跟我们之前讲的os.arch 一样 arm、arm64、ia32、mips、mipsel、ppc、ppc64、s390、s390x、以及 x64 2. process.cwd() …

docker 笔记5:redis 集群分布式存储案例

尚硅谷Docker实战教程&#xff08;docker教程天花板&#xff09;_哔哩哔哩_bilibili 目录 1.cluster(集群)模式-docker版哈希槽分区进行亿级数据存储 1.1面试题 1.1.1 方案1 哈希取余分区 1.1.2 方案2 一致性哈希算法分区 原理 优点 一致性哈希算法的容错性 一致性…

恢复数据的利器:易我数据恢复终身技术版v16.2.0.0

EaseUS Data Recovery Wizard为全球提供数据恢复方案,用于误删数据数据,电脑误删文件恢复,格式化硬盘数据恢复,手机U盘数据恢复等,RAID磁盘阵列数据恢复,分区丢失及其它未知原因丢失的数据恢复,简单易用轻松的搞定数据恢复。 特点描述 - 易我数据恢复中文便携版&#xff0c;无…

一笑的大型连续剧之第一集

自我介绍 哈喽&#xff0c;大家好。首先在开篇之前我想先自己介绍一下&#xff0c;我叫一笑&#xff0c;大家也可以叫我小舒。是一名又菜又爱写代码的Java程序员。当然这个也是我目前的一个想法&#xff0c;可以后期也可能想着去写一下其他的语言。介绍完成之后也就是单纯的想…