Nginx编译安装,信号,升级nginx

编译安装nginx:前面博客有写编译安装过程

systemctl stop firewalld

setenforce 0

mkdir /data
cd /data

wget http://nginx.org/download/nginx-1.18.0.tar.gz 

tar xf nginx-1.18.0.tar.gz

cd nginx-1.18.0/

yum -y install make gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel

./configure --prefix=/apps/nginx 

make -j2 ; make install

ln -s /apps/nginx/sbin/nginx /usr/local/sbin

nginx

curl 本机IP。看是否获取到了nginx首页

由于是配置安装,指定的安装路径在/apps/nginx下,其中conf为配置文件夹

 主配置文件nginx.conf

可以通过pstree -p | grep nginx查看进程数,发现主进程7483下只有一个子进程8212,这主要是由于主配置文件中work_processes来决定子进程数量。

打开该配置文件:

1、可以通过修改子进程数,来改变打开的进程数。

修改后需要重新加载,命令:nginx -s reload

cpu的亲缘性,能将nginx进程和cpu进行一一对应绑定。将worker_processes值修改为auto,那么系统有几个CPU就会产生几个子进程。

查看CPU个数:lscpu

修改为auto

重新加载,查看进程数。发现也是4个子进程。

我们通过查看nginx的主配置文件nginx.conf发现,work是子进程负责来自主进程分配的请求,交给work工作,构建响应报文(工作),但主进程负责分配任务。mastar + work进程。

主进程(master process):对外提供接口,对内转发,监控,读取nginx的配置文件,开启日志文件等。

子进程(工作进程)(work):接受来自主进程的响应,网络请求都有work进程处理,一般设置为核心数,都能够使用cpu资源,以防止进程数量过多导致占用cpu资源,io调用,获取响应报文,接收主程序指令,比如重启、升级和退出等。

nginx也可以单独作为命令去执行

nginx -t 检查语法

nginx -T检查语法并打印

以下不一一列举了,自行尝试:

nginx -v 显示版本

nginx -V 显示详细信息,包括编译信息

nginx -c 指定配置文件启动

nginx -s 发送信号,=kill

nginx -s reload 重新加载配置文件nginx.conf。生产环境中不能停掉重启,一般用来重新加载配置文件

nginx -s reopen 重新生成日志文件,或kill -s USR1 pid号

nginx -s USR2 飞行中升级,不影响正常运行的陈旭

-s选项:

nginx -s stop ; kill -9 (KILL); 立即停止

nginx -s quit ; kill -3 (QUIT); 优雅的退出,把所有的进程执行完退出

发送信号:分割日志:默认的日志文件在/apps/nginx/ogs/access.log中。

通过在另一台主机192.168.114.20上访问本机:curl 192.168.114.10。

可以发现有来自192.168.114.20的日志。我们修改日志文件名为access.log.bak,再创建一个access.log。

再次访问本机,在新日志文件中access.log看是否有记录。

可以发现,新创建的文件中不存在日志,依旧在老文件中。

那么我们需要向主进程发送信号:两种方式:nginx -s reopen 或 kill -s USR1 主进程PID号

主进程PID号通过pstree -p | grep nginx查看。

这里使用nginx -s reopen

再次访问本机,查看access.log文件是否有记录:

更新版本

下载nginx-1.20.2版本,作为新版本。到/usr/local/src/下。

解压并进入nginx-1.20.2,编译安装,指定模块:可以通过老版本的nginx -V查看编译信息。复制过来。

make 编译安装,不要make install否则会把老版本覆盖掉,不可取。

查看版本信息:相对路径。

需要将老的nginx改名备份以下。在/apps/nginx/sbin/nginx。

执行mv /apps/nginx/sbin/nginx /apps/nginx/sbin/nginx.bak

把新版本的复制进去:cp objs/nginx /apps/nginx/sbin/

可以查看一下:ll /apps/nginx/sbin/

通过-t选项检查语法,通过绝对路径执行。/apps/nginx/sbin/nginx -t

在想老版本主进程发送信号之前,查看老主进程号为:11961

向老版本主进程发送USR2信号后

 在logs下发现了一个nginx.pid.oldbin文件,它是原来的nginx.pid,为11961

 新老pid号:

此时存在两个nginx共同提供web服务。

删除老进程:kill -WINCH `cat /apps/nginx/logs/nginx.pid.oldbin`

``反撇,是执行``中命令,返回结果。也就是kill -WINCH 老pid号11961

优雅的关闭老进程的work进程。是指不影响work进程工作,执行完一个动作后关闭work进程。

 使旧的nginx work进程平滑停止,删除老进程号文件

向旧的nastar进程发送QUIT信号,关闭老mastar

在关闭老master前,发现升级出了问题,可以回滚向老master发送HUP,向新的master发送QUIT。

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

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

相关文章

揭秘:Java字符串对象的内存分布原理

先来看看下面寄到关于String的真实面试题,看看你废不废? String str1 "Hello"; String str2 "Hello"; String str3 new String("Hello"); String str4 new String("Hello");System.out.println(str1 str2)…

Android 11 Audio strategy配置解析

在启动AudioPolicyService时,通过EngineBase的loadAudioPolicyEngineConfig函数去解析strategy配置。其调用流程如下 接下来就对loadAudioPolicyEngineConfig展开分析 1,解析volume标签 engineConfig::ParsingResult EngineBase::loadAudioPolicyEngine…

Pytorch Lighting 库的学习 mvsplat 的笔记

变量理解: context_image: 表示投影的 refrence image Epipolar Transformer vs Swin Transformer : 不同于 Pixel Splat 使用的是 Epipolar Transformer. MVspalt 使用的是 Swin Transformer, 但是作者在 Code 里面 也使用了 Epipolar Tran…

容器项目之前后端分离

容器化部署ruoyi项目 #需要的镜像nginx、java、mysql、redis、 #导入maven镜像、Java镜像和node镜像 docker load -i java-8u111-jdk.tar docker load -i maven-3.8.8-sapmachine-11.tar docker load -i node-18.20.3-alpine3.20.tar #拉取MySQL和nginx镜像 docker pull mysql…

echarts学习:基本使用和组件封装

前言 我在工作中使用echarts较少,这就导致每次使用时都要从头再来,这让我很头疼。因此我决心编写一系列文章将我参与工作后几次使用echarts所用到的知识记录下来,以便将来可以快速查阅。 一、基本使用 像我一样的新手,想要入门e…

【Java】还有人不懂继承?25 个 Case 包教包会

还有人不懂继承?25 个 Case 包教包会 1.Implement single inheritance2.Implement multilevel inheritance3.Implement hierarchical inheritance4.Override a base class method into a derived class5.Demonstrate the protected access specifier6.Create an Stu…

《面试笔记》——MySQL终结篇30

三大范式? 第一范式:字段具有原子性,不可再分(字段单一职责) 第二范式:满足第一范式,每行应该被唯一区分,加一列存放每行的唯一标识符,称为主键(都要依赖主…

10- Redis 键值对数据库是怎么实现的?

在开始将数据结构之前,先给介绍下 Redis 是怎样实现键值对(key-value)数据库的。 Redis 的键值对中的 key 就是字符串对象,而 value 可以是字符串对象,也可以是集合数据类型的对象,比如 List 对象&#xf…

Django序列化器中is_valid和validate

今天上班的时候分配了一个任务,是修复前端的一个提示优化,如下图所示: 按照以往的经验我以为可以直接在validate上进行校验,如何抛出一个异常即可 ,例如: class CcmSerializer(serializers.ModelSerialize…

体验Photoshop:无需下载,直接在浏览器编辑图片

搜索Photoshop时,映入眼帘的是PS软件下载,自学PS软件需要多长时间,学PS软件有必要报班吗...PS软件的设计功能很多,除了常见的图像处理功能外,还涉及图形、文本、视频、出版等。不管你是平面设计师,UI/UX设计…

Servlet搭建博客系统

现在我们可以使用Servlet来搭建一个动态(前后端可以交互)的博客系统了(使用Hexo只能实现一个纯静态的网页,即只能在后台自己上传博客)。有一种"多年媳妇熬成婆"的感觉。 一、准备工作 首先创建好项目,引入相关依赖。具体过程在"Servlet的创建"中介绍了。…

FreeRTOS【14】软件定时器使用

1.开发背景 基于以上的章节,这个篇章主题是软件定时器使用,能使用 FreeRTOS 的基本都是从裸机 MCU 过来的,基本都知道 MCU 最基本的功能之一就是定时器,确切的说是硬件定时器,外围电路已经构建好的,精度很高…

【实战JVM】-实战篇-05-内存泄漏及分析

【实战JVM】-实战篇-05-内存泄漏及分析 1 内存溢出和内存泄漏1.1 常见场景1.2 解决内存溢出的方法1.2.1 发现问题1.2.1.1 top1.2.1.2 ViusalVM1.2.1.3 arthas1.2.1.4 PrometheusGrafana 1.2.2 堆内存状况对比1.2.3 内存泄漏原因-代码中1.2.3.1 equals()-hashCode()1.2.3.2 内部…

小程序-富文本编辑框的注意事项

富文本编辑框官网位置 表单组件 / editor (qq.com)https://developers.weixin.qq.com/miniprogram/dev/component/editor.html (一)富文本编辑框的作用 1.适用于一些表单的提交 2.这些表单内容需要自定义图片大小,编辑文字样式 主要用到的是…

【C++】10.list

list这个迭代器是双向迭代器&#xff0c;与vector的迭代器具有很大的区别&#xff0c;主要在于双向迭代器不支持&#xff0b;- 操作 正由于list的双向迭代器&#xff0c;因此<algorithm>中的sort()函数无法使用&#xff0c;list单独实现了一个sort()函数&#xff0c;但效…

统计信号处理基础 习题解答10-5

题目 通过令 并进行计算来重新推导MMSE估计量。提示&#xff1a;利用结果 解答 首先需要明确的是&#xff1a; 上式是关于观测值x 的函数 其次需要说明一下这个结果 和教材一样&#xff0c;我们用求期望&#xff0c;需要注意的是&#xff0c;在贝叶斯情况下&#xff0c;是个…

创刊即王炸?首个IF近7分,稳坐中科院1区!同领域全球第一!

【欧亚科睿学术】 01 期刊基本概况 【期刊类型】经济类SSCI 【出版社】SPRINGER出版社 【期刊概况】IF&#xff1a;8.0-9.0&#xff0c;JCR1区&#xff0c;中科院1区 【版面类型】正刊&#xff0c;仅少量版面 【预警情况】2020-2024年无预警记录 【收录年份】2016年被WO…

Facebook开户|Facebook做落地页的标准和建议

哈喽呀家人们下午好~今天Zoey来跟大家带来Facebook做落地页的标准和建议&#xff01;需要的家人建议点赞收藏啦&#xff01;&#xff01;用户通过点击你的推广链接、搜索引擎搜索结果页面的快照链接、社交媒体中的网页链接、电子邮件中的链接等进入你网站的特定页面&#xff0c…

tcp链接中的三次挥手是什么原因

一、tcp链接中的正常四次挥手过程&#xff1f; 刚开始双方都处于 ESTABLISHED 状态&#xff0c;假如是客户端先发起关闭请求。四次挥手的过程如下&#xff1a; 1、客户端打算关闭连接&#xff0c;此时会发送一个 TCP 首部 FIN 标志位被置为 1 的报文&#xff0c;也即 FIN 报文…

pytorch项目实战-分类模型李宏毅 21 机器学习第三次作业代码详解 CNN图片分类任务

CNN 卷积神经网络食物分类任务 前言一、数据集介绍二、CNN模型整体框架三、卷积神经网络代码详解3.1 导入需要使用的包3.2 数据集&#xff0c;数据加载器&#xff0c;数据增强操作3.2.1 数据增强3.2.2 数据集构建3.2.3 加载器构建 3.3 卷积神经网络构建3.4 训练代码3.4.1 半监督…