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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法03-散列表(哈希表)

介绍 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在存储器存储位置的数据结构。也就是说,它通过计算出一个键值的函数,将所需查询的数据映射到表中一个位置来让人访问&…

项目质量管理

目录 1.概述 2.三个关键过程 2.1.规划质量管理(Plan Quality Management) 2.2.管理质量(Manage Quality) 2.3.控制质量(Control Quality) 3.应用场景 3.1.十个应用场景 3.2.产品设计与开发 4.小结…

【自动驾驶技术】自动驾驶汽车AI芯片汇总——地平线篇

0. 前言 按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。 本篇文章是这个系列的第二篇&#x…

微信小程序毕业设计-书橱系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

[C][栈帧]详细讲解

目录 1.栈帧1.进程地址空间2.栈帧说明 2.认识相关寄存器3.认识相关汇编命令4.过程理解5.栈帧总结6.补充 1.栈帧 1.进程地址空间 .进程地址空间 2.栈帧说明 调用函数,形成栈帧函数返回,释放栈帧局部变量是存放在栈区上的栈区内存的使用习惯是&#xff…

数据结构之实现“通讯录”

大家先赞后看,养成好习惯 你们的点赞和关注还有收藏就是我的动力!!! 目录 前言 一、通讯录文件的创建和联系人结构体定义 1.1 文件创建 1.2 联系人结构体定义 二、通讯录的功能实现 2.1通讯录初始化 2.2通讯录销毁 2.3添…

使用手机小程序给证件照换底色

临时遇到一个需求,需要给证件照换底色。原始图像如下 最终需要换成红底的。 本次使用一款小程序"泰世茂证件照",打开该小程序,如下图所示 单击开始制作,然后选择二寸红底,如下图所示 然后单击相…

【AIGC时代】探索AIGC的无限可能:释放你的创意,定制你的视觉世界

前言 在数字时代的浪潮中,我们的视觉体验正在经历前所未有的变革。随着科技的飞速发展,我们不再满足于传统的图片制作方式,而是渴望拥有更具创意、更富个性的视觉呈现。在这样的背景下,AIGC(人工智能生成内容&#xf…

IF:83.5!一作兼通讯,​Nature系列综述:可以吃的机器人!

在当今科技与生物工程快速融合的时代,传统领域之间的界限正在逐渐模糊,创造了许多前所未有的创新机会。机器人设计与食品加工这两个看似无关的研究领域,正在通过材料特性、制造工艺和功能的交叉融合,展现出巨大的潜力。 可食用机器…

Flutter 验证码输入框

前言: 验证码输入框很常见:处理不好 bug也会比较多 想实现方法很多,这里列举一种完美方式,完美兼容 软键盘粘贴方式 效果如下: 之前使用 uniapp 的方式实现过一次 两种方式(原理相同)&#xff1…

【TB作品】MSP430F5529,单片机,电子秒表,秒表

硬件 MSP430F5529开发板7针0.96寸OLED /* OLED引脚分配 绿色板子DO(SCLK)------P4.3D1(DATA)------P4.0RES-----------P3.7DC------------P8.2CS------------P8.1 */ 程序功能 该程序是一个用C语言编写的,用于msp430f5529微控制器上的简单电子秒表应用。它使用…

多源 BFS 详解

目录 一、多源与单源的区别 二、例题练习 2.1 例题1:01 矩阵 2.2 例题2:飞地的数量 2.3 例题3:地图中的最高点 2.4 例题4:地图分析 一、多源与单源的区别 单源最短路问题如何解决已经在上篇博客给出BFS 解决最短路问题&am…

Qt | Qt 资源简介(rcc、qmake)

1、资源系统是一种独立于平台的机制,用于在应用程序的可执行文件中存储二进制文件(前面所讨论的数据都存储在外部设备中)。若应用程序始终需要一组特定的文件(比如图标),则非常有用。 2、资源系统基于 qmake,rcc(Qt 的资源编译器,用于把资源转换为 C++代码)和 QFile …

Java扩展机制:SPI与Spring.factories详解

一、SPI SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。 整体机制图如下: Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。 系统设计的各个抽象,往往有很多不…

【车载开发系列】汽车开发常用工具说明

【车载开发系列】汽车开发常用工具说明 【车载开发系列】汽车开发常用工具说明 【车载开发系列】汽车开发常用工具说明一. CANbedded二. Davinci Configurator Pro三. Davinci Developer-AUTOSAR软件组件设计工具四. MICROSAR五. MICROSAR OS六. CANdelaStudio七. Volcano VSB八…

css动态导航栏鼠标悬停特效

charset "utf-8"; /*科e互联特效基本框架CSS*/ body, ul, dl, dd, dt, ol, li, p, h1, h2, h3, h4, h5, h6, textarea, form, select, fieldset, table, td, div, input {margin:0;padding:0;-webkit-text-size-adjust: none} h1, h2, h3, h4, h5, h6{font-size:12px…

Nodejs-- 网络编程

网络编程 构建tcp服务 TCP tcp全名为传输控制协议。再osi模型中属于传输层协议。 tcp是面向连接的协议,在传输之前需要形成三次握手形成会话 只有会话形成了,服务端和客户端才能想发送数据,在创建会话的过程中,服务端和客户…

【计算机毕业设计】353微信小程序零食批发交易管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

如何进行时间管理

1.一项调查显示,每个人在睡觉上花费的平均时间大约为25年,这无疑是非常重要的。但排名第二的项目却让人大跌眼镜——看电视是8.3年。接下来分别是工作7.5年、吃饭6年、等待和家务各5年、身体护理4.1年、做白日梦4年,等等。 远远落后的是读书时…

ChatTTS+Python编程搞定语音报时小程序

文字转语音神器Python编程搞定语音报时小程序 今天一个好哥们发了一个文字转语音的AI神器的短视频。这个神器的网站是[ChatTTS - Text-to-Speech for Conversational Scenarios][https://chattts.com/],如下图所示: 这个开源项目可以从github.com上下载…