LNMP (Nginx网站服务) nginx 平滑升级

news2024/12/24 9:04:26

目录

 1.1 Nginx的简介

1.2  Apache与Nginx的区别

 Nginx对比Apache的优势:

1.3  Nginx的进程 

Nginx的两个进程:

 同步,异步,阻塞,非阻塞的概念补充

阻塞与非阻塞

同步和异步

2.1 编译安装Nginx

2.1 .1 关闭防火墙,将安装nginx所需软件包传到/opt目录下

2.2 安装依赖包

2.3 创建运行用户与组

2.4 编译安装Nginx

2.5 检查、启动、重启、停止 nginx服务

2.7新版本升级:

2.8 添加 Nginx 系统服务

3.0 nginx平滑升级

前言

3.1、准备工作

3.2、make编译

3.3、平滑升级


 1.1 Nginx的简介

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。

对HTTP并发连接的处理能力高,单台物理服务器可支持30000~50000个并发请求。(实际操作,很多公司为了服务器的稳定,都会设置在20000个左右

Nginx的主要使用场景: 虚拟主机,反向代理,缓存,http

Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适用于多处理器环境,因此,在一个apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。

1.2  Apache与Nginx的区别

 Nginx对比Apache的优势:

  • 轻量级,nginx比apache 占用更少的内存及资源;
  • 静态处理,Nginx 静态处理性能比 Apache 高 ;
  • Nginx可以实现无缓存的反向代理加速,提高网站运行速度;
  • Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于硬件;
  • Nginx支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级;
  • nginx是异步进程,多个连接可以对应一个进程 ;apache是同步多进程,一个连接对应一个进程;
  • Nginx高度模块化,编写模块相对简单,且组件比Apache少
  • 高并发下nginx 能保持低资源低消耗高性能;
  • Nginx 配置简洁, Apache配置复杂

apache相对于nginx的优点 : 

  • Rewrite比nginx的rewrite强大 (rewrite的主要功能就是实现统一资源定位符URL的跳转)
  • 模块多,基本想到的都可以找到
  • 少bug, nginx的bug相对较多
  • 超稳定
  • Nginx处理动态请求是弱项,动态请求要Apache去做。

1.3  Nginx的进程 

Apache和Nginx的默认端口都是80,当你发先Nginx启动失败,导致的原因可能就是80端口被占用,而导致服务启动失败,可以修改服务的端口,从而实现两个服务的同时进行。

Nginx的两个进程:

master process:主进程(守护进程),用来管理工作进程。

worker process:工作进程,用来处理用户的请求。



 同步,异步,阻塞,非阻塞的概念补充

阻塞与非阻塞


阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务,函数只有在得到结果之后才会返回。


非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

同步和异步


同步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致


异步:一个服务的完成需要依赖其他服务时,只通知其他依赖服务开始执行,而不需要等待被依赖的服务完成,此时该服务就算完成了。被依赖的服务是否最终完成无法确定,因此它是一个不可靠的服务序列。
 


2.1 编译安装Nginx

2.1 .1 关闭防火墙,将安装nginx所需软件包传到/opt目录下

  1. systemctl stop firewalld

  2. systemctl disable firewalld

  3. setenforce 0

安装

2.2 安装依赖包

#nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。
yum -y install pcre-devel zlib-devel gcc gcc-c++ make

2.3 创建运行用户与组

#创建运行用户、组(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)
useradd -M -s /sbin/nologin nginx

2.4 编译安装Nginx

  • cd /opt                                                ##切换到opt目录下进行操作
  • tar zxvf nginx-1.12.2.tar.gz -C /opt/
  • cd nginx-1.12.2/
  • ./configure \
  • --prefix=/usr/local/nginx \                    #指定nginx的安装路径
  • --user=nginx \                                #指定用户名
  • --group=nginx \                                #指定组名
  • --with-http_stub_status_module                #启用 http_stub_status_module 模块以支持状态统计操作  VTS
  • ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/        #让系统识别nginx的操作命令

2.5 检查、启动、重启、停止 nginx服务

  • nginx -t                                #检查配置文件是否配置正确
  • #启动 nginx

  • 扩展
  •                                     
  • #停止
  • cat /usr/local/nginx/logs/nginx.pid        #先查看nginx的PID号
  • kill -3 <PID号>
  • kill -s QUIT <PID号>
  • killall -3 nginx                                          ##等进程结束后再杀死进程
  • killall -s QUIT nginx
  • #重载
  • kill -1 <PID号>
  • kill -s HUP <PID号>
  • killall -1 nginx
  • killall -s HUP nginx
  • #日志分割,重新打开日志文件
  • kill -USR1 <PID号>
  • #平滑升级
  • kill -USR2 <PID号>

2.7新版本升级:

  • tar -zxvf nginx-1.22.0.tar.gz  1.22.0  
  • cd nginx-1.22.0
  • yum -y  install pcre-devel zlib zlib-devel openssl openssl-devel  ##装依赖包
  • ./configure \
  • --prefix=/usr/local/nginx \        
  • --user=nginx \                    
  • --group=nginx \                    
  • --with-http_stub_status_module \
  • --with-http_ssl_module
  • make   ##编译
  • mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old   备份
  • cp objs/nginx /usr/local/nginx/sbin/nginx
  • 重启服务 并且
  • nginx -V   #查看版本
  • 扩展:
  • make upgrade               ##升级的第二种方法
  • #或者先 killall nginx ,再/usr/local/nginx/sbin/nginx

2.8 添加 Nginx 系统服务

方法一: service 系统管理

  • vim /etc/init.d/nginx
  • #!/bin/bash
  • #chkconfig: 35 99 20    // 这是固定格式,2345表示运行级别,之后为开机执行顺序和关机执行顺序
  • #description:Nginx Service Control Script    //这也是必须的 
  • COM="/usr/local/nginx/sbin/nginx" 
  • PID="/usr/local/nginx/logs/nginx.pid"
  • case "$1" in
  • start)
  •   $COM
  • ;;
  • stop)
  •   kill -s QUIT $(cat $PID)
  • ;;
  • restart)
  •   $0 stop
  •   $0 start
  • ;;
  • reload)
  •   kill -s HUP $(cat $PID)
  • ;;
  • *)
  • echo "Usage: $0 {start|stop|restart|reload}"
  • exit 1
  • esac
  • exit 0
  • chmod +x /etc/init.d/nginx
  • chkconfig --add nginx    #添加为系统服务
  • systemctl stop nginx   
  • systemctl start nginx

 

service   nginx   start|stop|restart|reload
 

3.0 nginx平滑升级

前言

在工作当中时常会遇到一些软件升级的需求,这次主要是记录使用nginx进行平滑升级(在不关闭nginx服务情况下)

需求将已安装的nginx-1.6.3升级为nginx-1.20.2

3.1、准备工作

下载需要更新的nginx版本,解压到opt目录下

#  tar -zxvf nginx-1.20.2.tar.gz -C /opt/

3.2、make编译

  • # 进入解压目录
  • cd ./nginx-1.20.2
  • # 进行配置(因为之前已经指定了用户、组、路径等信息,所以这次直接执行就ok)
  • ./configure
  • # 进行编译 
  • make
  • # 编译完成后可以看到一个objs文件夹,进入到objs文件夹,里面有个nginx二进制文件
  • cd ./objs

3.3、平滑升级

  • 备份安装目录下的nginx
  • cd /usr/local/nginx/sbin
  • mv nginx nginx.bak
  • 复制objs目录下的nginx到当前sbin目录下
  • cp /opt/software/nginx/nginx-1.20.2/objs/nginx /usr/local/nginx/sbin/
  • 查看进程pid号
  • ps -elf |grep "nginx"
  • 平滑升级19118进程
  • kill -USR2 19118
  • 快速关闭19118进程
  •  kill -QUIT 19118
  • 查看最新版本号
  • ./nginx -v

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

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

相关文章

两点边值问题的有限元方法以及边值条件的处理示例

文章目录 引言题目补全方程刚度矩阵构造基底边值条件非齐次左边值条件非齐次右边值条件非齐次非齐次边值条件有限元方程 求数值解直接求总刚度矩阵先求单元刚度矩阵 引言 本文参考李荣华教授的《偏微分方程数值解法》一书 题目 对于非齐次第二边值问题 { − d d x ( p d u …

陶哲轩甩出调教GPT-4聊天记录,点击领取大佬的研究助理

量子位 | 公众号 QbitAI 鹅妹子嘤&#xff0c;天才数学家陶哲轩搞数学研究&#xff0c;已经离不开普通人手里的“数学菜鸡”GPT了&#xff01; 就在他最新解决的一个数学难题下面&#xff0c;陶哲轩明确指出自己“使用了GPT-4”&#xff0c;后者给他提出了一种可行的解决方法…

【FFmpeg实战】avformat_find_stream_info() 函数源码解析

转载自地址&#xff1a;https://cloud.tencent.com/developer/article/1873836 先来看一下 avformat_find_stream_info() 的头文件里的注释对该函数的介绍&#xff0c;本文我们基于 FFmpeg n4.2 版本的源码分析。 /*** Read packets of a media file to get stream informatio…

Apikit 自学日记:创建 API 文档

Apikit 中一共有5种创建API文档的方式&#xff1a; 新建API文档 导入API文档&#xff0c;详情可查看《导入、导出API文档》 从模板添加API文档&#xff0c;详情可查看《API文档模板》 自动生成API文档&#xff0c;详情可查看《自动生成API文档》 IDEA插件注释同步API文档 …

linux 在线安装 Redis

博主介绍&#xff1a; ✌博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家✌ Java知识图谱点击链接&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; &#x1f495;&#x1f495; 感兴趣的同学可以收…

生成式AI掀起产业智能化新浪潮|爱分析报告

报告摘要 大模型支撑的生成式AI&#xff0c;让人类社会有望步入通用人工智能时代&#xff0c;拥有广阔的应用前景&#xff0c;有望赋能千行百业。当前生成式AI的落地整体处于初级阶段&#xff0c;不同模态的落地时间表差异明显&#xff0c;企业需求主要集中在数字化程度高、容…

地平线旭日x3派部署yolov8

地平线旭日x3派部署yolov8 总体流程1.导出onnx模型导出YOLOV8_onnxruntime.py验证onnxutils.py 2.在开发机转为bin模型2.1准备数据图片2.2转换必备的yaml文件2.3开始转换 3.开发机验证**quantized_model.onnx4.板子运行bin模型 资源链接 总体流程 1.导出onnx模型 导出 使用y…

03 | 事务隔离:为什么你改了我还看不见?

以下出自 《MySQL 实战 45 讲》 03 | 事务隔离&#xff1a;为什么你改了我还看不见&#xff1f; 隔离性与隔离级别 当数据库上有多个事务同时执行的时候&#xff0c;就可能出现脏读&#xff08;dirty read&#xff09;、不可重复读&#xff08;non-repeatable read&#xff0…

搜索功能全流程解析

在产品中一般会分布着大大小小的搜索&#xff0c;以便提升用户的信息获取效率和信息消费的能力。本文作者全流程角度&#xff0c;对搜索功能进行了讲解&#xff0c;并从搜索流程中寻找提升体验的触点&#xff0c;一起来看一下吧。 在产品中因多功能诉求和业务复杂性等因素&…

《Pytorch深度学习和图神经网络(卷 1)》学习笔记——第三章

学习基于如下书籍&#xff0c;仅供自己学习&#xff0c;用来记录回顾&#xff0c;非教程。 <PyTorch深度学习和图神经网络&#xff08;卷 1&#xff09;——基础知识>一书配套代码&#xff1a; https://github.com/aianaconda/pytorch-GNN-1st 百度网盘链接&#xff1a;…

vite优化

1.利用 rollup-plugin-analyzer 插件进行进行代码体积分析&#xff0c;从而优化你的代码。 根据项目体积分析&#xff0c;进行接下来的优化&#xff1a; &#xff08;一&#xff09;使用unplugin-vue-components插件按需加载antd vue 组件&#xff1a; 使用步骤 1、安装插件…

6.18 、Java初级:锁

1 同步锁 1.1 前言 经过前面多线程编程的学习,我们遇到了线程安全的相关问题,比如多线程售票情景下的超卖/重卖现象. 上节笔记点这里-进程与线程笔记 我们如何判断程序有没有可能出现线程安全问题,主要有以下三个条件: 在多线程程序中 有共享数据 多条语句操作共享数据 多…

GPT-4 的创造力全方位持平或碾压人类 | 一项最新研究发现

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 最近&#xff0c;一项有关 GPT-4 的创造力思维测试火了。来自蒙大拿大学和 UM Western 大学的研究团队发现&#xff0c;GPT-4 在 Torrance 创造性思维…

Sharding-JDBC之RangeShardingAlgorithm(范围分片算法)

目录 一、简介二、maven依赖三、数据库3.1、创建数据库3.2、创建表 四、配置&#xff08;二选一&#xff09;4.1、properties配置4.2、yml配置 五、范围分片算法六、实现6.1、实体层6.2、持久层6.3、服务层6.4、测试类6.4.1、保存订单数据6.4.2、根据时间范围查询订单 一、简介…

还在等待本地渲染?云渲染才是真的省时省心又省钱!

可能很多设计师会觉得本地渲染效果图或动画更灵活&#xff0c;而且没有什么额外的附加费用&#xff0c;但其实不然&#xff01;当你面对多个大型或紧急的项目时&#xff0c;本地渲染就“慌”了。 接下来我将全面对比“本地渲染”和“云渲染”&#xff0c;相信还在等待本地渲染…

黑客常用cmd命令(window版)

1、ping命令 ping命令是一个常用的网络工具&#xff0c;用来测试和诊断网络连接状况。通过发送ICMP&#xff08;Internet控制消息协议&#xff09;数据包到目标主机&#xff0c;并接收回复的数据包&#xff0c;可以测量目标主机的可达性、平均响应时间等指标。 在Windows操作…

前后端实现:行为验证码---文字点选

最近接到一个新的需求&#xff0c;由于客户是内网&#xff0c;你能使用腾讯的验证码了&#xff0c;需要改为前后端实现。 具体的代码已经提交git 项目效果图&#xff1a; 使用的技术栈&#xff1a;vitevue3ts git地址&#xff1a;https://github.com/susanliy/point_captcha…

TCP/IP协议是什么?

78. TCP/IP协议是什么&#xff1f; TCP/IP协议是一组用于互联网通信的网络协议&#xff0c;它定义了数据在网络中的传输方式和规则。作为前端工程师&#xff0c;了解TCP/IP协议对于理解网络通信原理和调试网络问题非常重要。本篇文章将介绍TCP/IP协议的概念、主要组成部分和工…

《程序喵》项目跨域问题解决思路

跨域问题&#xff1a;由于浏览器的 同源策略 限制&#xff0c;当一个请求url的协议、域名、端口号三者之间有任意一个与当前的url不同即为跨域。 同源策略是一种约定&#xff0c;它是浏览器中最核心也最基本的安全功能。同源策略会阻止一个域的 Javascript 脚本和另一个域的内…

举例说明梯度下降算法与最小二乘法的区别

梯度下降算法和最小二乘法都是用于求解线性回归问题中参数的优化方法。我们可以通过一个简单的例子来说明它们之间的区别。 假设我们有以下数据点&#xff1a;(1, 2)&#xff0c;(2, 3)&#xff0c;(3, 4)&#xff0c;(4, 5)&#xff0c;我们希望找到一条最佳拟合线 y wx b&a…