nginx配置和热部署实践

目录

一、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 `

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

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

相关文章

Mac电脑配置Flutter开发环境

1.进入官网下载页: Flutter SDK releases | Flutter 可以看到有 Windows、macOS、Linux三种系统的下载包 选择macOS,然后点击下载 Stable channel(稳定版)中的最新版本,下载完成后可以移动到资源库Library中。 2.下载…

Unity Input System最简单使用

开始学的是 Input Manager 比较好理解,Input System却不好理解,教程也找了很多,感觉都讲的不清楚,我这里做一个最简单的用 Input System 添加鼠标左键和右键的效果。 1. 安装 Input System 包 首先这个功能不是内置的&#xff0…

Flutter笔记:使用Flutter构建响应式PC客户端/Web页面-案例

Flutter笔记 使用Flutter构建响应式PC客户端/Web页面-案例 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/detai…

红黑树,AVLTree树(平衡二叉树)迭代器原理讲解

红黑树,AVLTree树底层实现逻辑都是平衡二叉树(AVLTree高度平衡,红黑树以某种规则平衡),但终究不像链表的迭代器那样逻辑简单。 简单叙述以下,二叉树上面迭代器的运行逻辑,根据下面的图&#xff…

leetcode-链表经典题

1.反转单链表 206. 反转链表https://leetcode.cn/problems/reverse-linked-list/这里我们使用创建一个变量cur来遍历原链表,再创建一个新节点newnode,首先使用一个循环来遍历原链表,cur为NULL是循环结束,每次进入循环将cur的下一…

.mallab勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

导言: .mallab勒索病毒是一种极具威胁性的数字病毒,通过高级加密算法深度侵袭用户文件,迫使受害者支付赎金以获取解密密钥。了解其侵害方式和对抗手段对数字安全至关重要。数据的重要性不容小觑,您可添加我们的技术服务号&#x…

threejs(12)-着色器打造烟雾水云效果

一、自己封装水波纹效果 src/main/main01.js import * as THREE from "three";import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; import gsap from "gsap"; import * as dat from "dat.gui"; import ver…

【文件IO】

文章目录 File常见方法和属性属性构造方法方法 InputStream方法FileInputStream OutputStream利用 OutputStreamWriter 进行字符写入 总结按字节读取数据按字节写入数据按字符读取数据按字符写入数据 File常见方法和属性 属性 修饰符及类型属性说明static StringpathSeparato…

网络安全(黑客技术)-高效自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

思科设备静态路由配置

一、静态路由基本知识 路由器的主要功能就是用来转发IP 数据包以使数据包到达正确的目的主机。可以想象数据包到达路由器就像一辆汽车开到十字路口,路由表就类似路标,列出可能到达的目的地,以及应该选择哪条路到达目的地。 路由器必须要有相应…

Linux - 基础IO(重定向 - 重定向模拟实现 - shell 当中的 重定向)- 下篇

前言 上一篇博客当中,我们对 文件 在操作系统当中是 如何就管理的,这个问题做了 详细描述,本篇博客将基于上篇 博客当中的内容进行 阐述,如有疑问,请参考上篇博客: Linux - 基础IO(Linux 当中…

应用层——HTTP协议

文章目录 HTTP协议1.HTTP简介2.认识URL3.urlencode和urldecode4.HTTP协议格式(1)HTTP请求协议格式(2)HTTP响应协议格式 5.HTTP的方法6.HTTP的状态码7.HTTP常见的Header8.Cookie和Session HTTP协议 1.HTTP简介 HTTP(Hy…

mac安装brew

命令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"如图 选择下载源,进行安装 安装完成 验证

计算机毕业设计 基于SpringBoot的实训管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

【零基础小白也能轻松学会】3DMAX编织建模教程

有没有想过这些木质材料是如何在椅子上相互交织的?复杂吗?也许是也许不是……本教程将指导您一步一步地以任何形式提出自己的复杂编织图案。本教程将重点关注建模部分,并让您从那里开始发挥想象力。 1.首先创建一个新平面(长度55&…

C++: 内存管理 (new / delete)

文章目录 一. C/C 内存分布二. C 语言中动态内存管理方式: malloc/calloc/realloc/free三. C内存管理方式1. new / delete 操作内置类型2. new / delete 操作自定义类型 四. operator new 与 operator delete 函数五. new 和 delete 的实现原理1. 内置类型2. 自定义类型 六. 定…

【 第八章】软件设计师 之 计算机软件法律法规

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 备考资料导航 软考好处:软考的…

程序员的护城河:职业发展的关键元素

目录 1. 技术深度与广度 2. 项目经验与实际操作 3. 沟通与团队协作 4. 持续学习与自我更新 5. 社区参与与开源贡献 6. 创新思维与解决问题的能力 7. 职业规划与自我管理 结语 在科技日新月异的今天,程序员的竞争已经不再仅仅依赖于技术水平,而是…

路径总和[简单]

优质博文:IT-BLOG-CN 一、题目 给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在 根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和targetSum。如果存在,返回true;否则,返回fa…

基于SpringMVC模式的电器网上订购系统的设计

大家好我是玥沐春风,今天分享一个基于SpringMVC模式的电器网上订购系统的设计,项目源码以及部署相关请联系我,文末附上联系信息 。 项目简介: 本系统利用现在比较广泛的JSP结合后台SpringMybatisAjax编写程序的方式实现的。 在…