nginx配置和热部署实践

news2024/10/7 16:15:24

目录

一、nginx配置文件

1.配置文件

2.nginx配置文件语法

3.include

二、nginx.conf参数

1.user参数

2.nginx.conf重要的指令块

3.nginx命令行

三、nginx热部署功能实践

1.热部署的特点

2.大致流程

3.环境准备

4.备份旧nginx二进制文件

5.下载编译安装新的nginx

6.检查一下新版的nginx信息

7.检查当前nginx状态

8.发送user2信号

9.此时再次检查新的nginx进程状态

10.发送WINCH信号


一、nginx配置文件

1.配置文件

cd /var/nginx_1.17/conf/

给配置文件语句加高光

mkdir -p ~/.vim

cp -r /root/nginx-1.17.10/contrib/* ~/.vim/

vim nginx.conf

2.nginx配置文件语法

  • nginx.conf是由指令和指令块组成
  • 每行语句都得有分号结束,指令和参数之间都是有空格分隔的
  • 指令快可以由大括号{},组织多条语句
  • nginx.conf使用#表示注释符号
  • nginx支持用$变量名
  • nginx支持include语句
  • nginx部分指令支持正则表达式,如rewrite重写

3.include

建立文件夹,每个站点一个conf文件

/var/nginx_1.17/conf
mkdir extra
cd extra/
touch index1.conf
cd .. 
vim nginx.conf

加上

include extra/*.conf;

cd extra/
touch www.conf
touch blog.conf
touch bbs.conf


二、nginx.conf参数

1.user参数

ps -ef | grep nginx

工作进程的用户是nobody

vim /var/nginx_1.17/conf/nginx.conf

useradd www
passwd www
nginx -s reload

查看下

ps -ef | grep nginx

2.nginx.conf重要的指令块

核心功能都在http{}指令块里面,http{}块还包含了以下指令

  • server{}指令快,对应一个站点配置,反向代理,静态资源站点
  • location{},对应一个url
  • upstream{},定义上游服务,负载均衡池

3.nginx命令行

nginx启停指令,-s参数,指的是给nginx进程发送某种信号
nginx #初次启动,直接输入nginx,如启动后再执行该命令,就会提示端口冲突
nginx -s stop #停止nginx进程
nginx -s reload #平滑重启,利用reload可以在不重启nginx进程的情况下,重新读取配置文件

4.nginx-master信号传递

  • master主进程是不处理请求的,而是分配请求发给worker进程,主进程负责重启,热加载,热部署等等
  • master是根据nginx.conf中,worker_process定义启动时创建的工作进程数
  • 当worker运行后,master就处于一个等待的状态,等待用户的请求来临,或者系统信号
  • 系统管理员可以发送kill指令,或者nginx -s 信号,这样的形式操控nginx


三、nginx热部署功能实践

1.热部署的特点

nginx作为一个优秀的web服务器,优秀的反向代理服务器,并且nginx也支持高可用的特性,nginx还支持热部署的特点。

热部署的特点:再不重启或者关闭进程的情况下,新的应用直接替换旧的应用

比如:更换nginx的二进制版本

2.大致流程

  • 备份旧的程序:二进制文件 备份nginx命令
  • 覆盖旧的二进制文件
  • 发送USER2信号发给旧的master进程
  • 发送WINCH信号给旧的master进程
  • 发送QUIT信号给旧的master进程

3.环境准备

nginx程序版本

nginx -v

准备一个新的nginx版本

wget http://tengine.taobao.org/download/tengine-2.2.0.tar.gz

nginx工作模式是master-work

刚才所说的nginx支持reload重载,仅仅是nginx的master进程,在检查配置文件正确之后,则更新,错误则会返回异常,正确的情况下也不会更改已经建立的worker,只会等待worker处理完毕请求之后,杀死旧的worker,然后再从新的配置文件中,运行出新的worker(一旦更换了配置文件,reload master主进程,那么手下的worker也就会被换一批了)

nginx还提供了热部署功能,特点是:在不影响用户体验的情况下,进行软件的版本升级,也就是不主动杀死worker,更换软件的二进制命令

4.备份旧nginx二进制文件

cd /var/nginx_1.17/sbin/

mv nginx nginx_1.1.7

5.下载编译安装新的nginx

cd ~
tar -zxvf tengine-2.2.0.tar.gz
cd tengine-2.2.0
./configure --prefix=/var/nginx_1.17 --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-threads --with-file-aio
make && make install

6.检查一下新版的nginx信息

cd /var/nginx_1.17/sbin/

ls

我们有两个版本的nginx了

[root@localhost sbin]# nginx -v
Tengine version: Tengine/2.2.0 (nginx/1.8.1)
[root@localhost sbin]# nginx_1.1.7 -v
nginx version: nginx/1.17.10

7.检查当前nginx状态

ps -ef | grep nginx

8.发送user2信号

此时发送user2信号给旧的master process,租用是使得nginx旧的版本停止接收用户请求,并且切换为新的nginx版本

kill -USR2 8290

9.此时再次检查新的nginx进程状态

ps -ef | grep nginx

10.发送WINCH信号

此时发送WINCH信号,给旧的master进程,让旧的master进程优雅的退出

kill -WINCH ` cat /var/nginx_1.17/logs/nginx.pid.oldbin `

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

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

相关文章

vue:实现顶部消息横向滚动通知

前言 最近有个需求&#xff0c;是在系统顶部展示一个横向滚动的消息通知。需求很简单&#xff0c;就是消息内容从右往左一直滚动。 效果如下&#xff1a; 因为我的需求很简单&#xff0c;功能就这样。如果有什么其他需求&#xff0c;可以再继续修改。 代码 使用 <noti…

SQL表、字段、查询参数获取

SQL工具类表、字段、查询参数提取 1. 执行效果2. 使用2.1 引入依赖2.2 相关实体2.3 工具类 1. 执行效果 2. 使用 2.1 引入依赖 <!-- sql 解析处理--><dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifact…

说说你在使用React 过程中遇到的常见问题?如何解决?

一、前言 在使用react开发项目过程中&#xff0c;每个人或多或少都会遇到一些"奇怪"的问题&#xff0c;本质上都是我们对其理解的不够透彻 react 系列&#xff0c;33个工作日&#xff0c;33次凌晨还在亮起的台灯&#xff0c;到今天就圆满画上句号了&#xff0c;比心…

通用工作站设计方案 :807-ORI-S3R500 -多路PCIe3.0的单CPU通用工作站

ORI-S3R500 -多路PCIe3.0的单CPU通用工作站 (研华工业计算机IPC-610&#xff0c;IPC940 升级款) 一、机箱功能和技术指标&#xff1a; 系统 系统型号 ORI-SR500 主板支持 EEB(12*13)/CEB(12*10.5)/ATX(12*9.6)/Mi cro ATX 前置硬盘 最大支持2个3.5寸1个2.5寸SATA …

2024 款:最新前端技术趋势

Hello&#xff0c;大家好&#xff0c;我是 Sunday。 上一次的时候聊了 那么些已经落后的前端开发技术 。但是光知道什么技术落后了是不够的&#xff0c;咱们还得知道 前端最新的技术趋势是什么。所以&#xff0c;今天这篇文章&#xff0c;咱们就来聊一聊&#xff0c;2023 最新…

IDEA 使用Reset Current Branch to Here 进行git 版本控制,图文操作

文章目录 一、总结区别&#xff08;只针对本地仓库操作&#xff09;Soft详细解释文件版本冲突处理 Mixed详细解释Hard详细解释Keep详细解释文件版本冲突处理 二、其他Revert commit 参考文档 一、总结区别&#xff08;只针对本地仓库操作&#xff09; Soft详细解释 Soft操作只…

Linux本地部署1Panel现代化运维管理面板并实现公网访问

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

nginx的配置文件说明

nginx的配置文件说明 https://blog.csdn.net/S_ZaiJiangHu/article/details/126838279 https://blog.csdn.net/qq_33454884/article/details/89212702 二、nginx的正向代理和反向代理 2.1 nginx的反向代理 2.1.1 反向代理说明 对于客户端来说&#xff0c;反向代理就好像目标…

STM32——NVIC中断优先级管理分析

文章目录 前言一、中断如何响应&#xff1f;NVIC如何分配优先级&#xff1f;二、NVIC中断优先级管理详解三、问题汇总 前言 个人认为本篇文章是我作总结的最好的一篇&#xff0c;用自己的话总结出来清晰易懂&#xff0c;给小白看也能一眼明了&#xff0c;这就是写博客的意义吧…

【中间件篇-Redis缓存数据库03】Redis高级特性和应用(发布 订阅、Stream)

Redis高级特性和应用(发布 订阅、Stream) 发布和订阅 Redis提供了基于“发布/订阅”模式的消息机制&#xff0c;此种模式下&#xff0c;消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道( channel)发布消息&#xff0c;订阅该频道的每个客户端都可以收到该消息。 …

遇到问题[已解决]TypeError: ‘odict_keys‘ object is not subscriptable

背景 运行CPD代码时&#xff0c;由于源代码踊跃python2.7&#xff0c;但是我的是3.8出现报错 【Python3】【报错】- TypeError: ‘dict_keys‘ object is not subscriptable-CSDN博客 原因&#xff1a; 在Python3中&#xff0c;keys()方法不允许切片 VGG代码如下 解决办法: 就…

最新GitHub学生认证,可以愉快的使用Copilot了(保姆级教程)

&#x1f388;博客主页&#xff1a;&#x1f308;我的主页&#x1f308; &#x1f388;欢迎点赞 &#x1f44d; 收藏 &#x1f31f;留言 &#x1f4dd; 欢迎讨论&#xff01;&#x1f44f; &#x1f388;本文由 【泠青沼~】 原创&#xff0c;首发于 CSDN&#x1f6a9;&#x1f…

Project Office X for Mac项目管理工具

Project Office X是一款全能的项目管理软件&#xff0c;可帮助企业或个人有效地规划、协调和执行项目。它具有直观的用户界面和强大的功能&#xff0c;适用于各种规模的项目。 这个软件提供了多种实用工具&#xff0c;包括项目计划、资源管理、任务分配、进度跟踪、风险管理和团…

Google Firebase PHP实现消息推送

获取key的方法&#xff1a; 登录谷歌开发者后台 https://console.firebase.google.com/?hlzh-cn function firebaseNotice($title,$body){$token_arr[token1,token2]; //用户的firebasetoken列表$notify_msg ["notification" > ["title" > $title…

NodeJs - 单线程模型和高并发处理原理

NodeJs - 单线程模型和高并发处理原理 前言一. NodeJs 线程模型1.1 NodeJs 模型分析1.2 NodeJs处理事件请求的流程1.3 NodeJs 和传统 Server 的对比 二. Cluster 模块利用多核CPU处理三. 总结 前言 我们都知道JavaScript是单线程的处理。但是我们在Node开发、Egg开发下&#x…

Ubuntu 20.04编译Chrome浏览器

本文记录chrome浏览器编译过程&#xff0c;帮助大家避坑qaq 官网文档&#xff1a;https://chromium.googlesource.com/chromium/src//main/docs/linux/build_instructions.md 一.系统要求 一台64位的英特尔机器&#xff0c;至少需要8GB的RAM。强烈推荐超过16GB。至少需要100…

问题排查-进程分析工具-001strace-安装方式--用法用量

参考来源&#xff1a; centos7 安装strace 《极客时间-网络排查案例课》 strace工具介绍 跟网络排查中有 tcpdump 这样强大的工具类似&#xff0c;进程的排查也有相关的强大工具&#xff0c;比如strace。通过 strace&#xff0c;我们可以把排查工作从进程级别&#xff0c;继续…

【EI会议征稿】第八届先进能源科学与自动化国际研讨会(AESA 2024)

第八届先进能源科学与自动化国际研讨会&#xff08;AESA 2024) 2024 8th International Workshop on Advances in Energy Science and Automation 继AESA 2017-2023相继成功举办之后&#xff0c;来自国内外多所高校、科研院所及企业代表在先进能源科学与自动化的科研合作和交流…

【虹科干货】Lambda数据架构和Kappa数据架构——构建现代数据架构

如何更好地构建我们的数据处理架构&#xff0c;如何对IT系统中的遗留问题进行现代化改造并将其转变为现代数据架构&#xff1f;该怎么为你的需求匹配最适合的架构设计呢&#xff0c;本文将分析两种最流行的基于速度的数据架构&#xff0c;为你提供一些思路。 文章速览&#xf…

2023最新版JavaSE教程——第5天:数组

目录 一、数组的概述1.1 为什么需要数组1.2 数组的概念1.3 数组的分类 二、一维数组的使用2.1 一维数组的声明2.2 一维数组的初始化2.2.1 静态初始化2.2.2 动态初始化 2.3 一维数组的使用2.3.1 数组的长度2.3.2 数组元素的引用 2.4 一维数组的遍历2.5 数组元素的默认值 三、一维…