nginx-编译安装-基础指令-信号

news2024/11/16 7:37:51

nginx 的编译与安装

nginx目录介绍

如果我们需要整合第三方模块,需要自己编译然此模块编译到nginx里面。apt和yum的安装只具有常用的基础功能。

  • 下载nginx
wget http://nginx.org/download/nginx-1.14.0.tar.gz

/auto 目录
在这里插入图片描述
Changes 描述了一每个版本提供了那些特性 以及修复了那些bug
在这里插入图片描述
/conf 配置文件的示例文件
configure 执行编译前必须执行的脚本,用于生成中间文件,编译会使用到。
contrib 用于显示nginx的配置语法,需要拷贝到我们的vim中

#在profile开启配色,记得配置完成以后source一下
TERM=linux
#在用户下面创建目录
mkdir ~/.vim 
#拷贝文件

拷贝前
在这里插入图片描述
拷贝后,可以看到有颜色了
在这里插入图片描述
/html 错误500 和欢迎页面
在这里插入图片描述
/man 文件帮助文件

 man ./nginx.8 #注意./不能少

在这里插入图片描述
/src 源代码

nginx编译

1 安装第三方库

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

1.1 第三库的介绍
1) PCRE
PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。
注:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。
2) zlib
zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。

3) OpenSSL

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。

  • 先看看编译的时候支持那些参数

2 编译准备
1)在编译之前可以查看配置支持那些参数

#查看编译的时候支持那些参数
./configure --help

在这里插入图片描述

通常只需要指定–prefix=Path 所有的文件都会在这个目录下生成
with 和without分别对应了默认编译的时候会不会将这些模块编译进nginx中。

#编译 如果过程中没有任何错误就编译成功了 编译过程中会生成一些中间文件 文件会放到objs文件下
./configure --prefix=/env/liyong/install/nginx

比如更多的配置

./configure \
--prefix=/usr/local/nginx \
--pid-path=/usr/local/nginx/nginx.pid \
--lock-path=/usr/local/nginx/nginx.lock \
--error-log-path=/usr/local/nginx/log/error.log \
--http-log-path=/usr/local/nginx/log/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/usr/local/nginx/temp/client \
--http-proxy-temp-path=/usr/local/nginx/temp/proxy \
--http-fastcgi-temp-path=/usr/local/nginx/temp/fastcgi \
--http-uwsgi-temp-path=/usr/local/nginx/temp/uwsgi \
--http-scgi-temp-path=/usr/local/nginx/temp/scgi

可以在objs下面看到编译包含了那些模块每一个extern都是一个模块

cat ./ngx_modules.c

在这里插入图片描述
3 编译
1)在nginx目录下执行make

make #执行以后可以运行的二进制文件都在objs文件下

在这里插入图片描述

cd objs

在这里插入图片描述
2) make install

make install #首次安装执行,如果升级还需要做其他操作

下面就可以到prefix文件中看到安装成功的nginx
在这里插入图片描述
在这里插入图片描述

nginx快速安装
#通过yum安装
sudo yum install -y nginx
#通过whereis 指令查看安装到了哪里
whereis nginx
配置命令行

1 发送信号

#重载配置文件
./nginx -s reload
#停止服务
./nginx -s stop 
#优雅的停止服务
./nginx -s quit

2 热部署,比如升级服务

#热部署
cp nginx nginx.old #备份旧文件  在sbin目录下
#将生产的新文件复制到sbin目录下 并给master发送一个信号
kill -USR2 12734 #master的进程id
kill -WINCH 12734 #优雅的关闭worker进程

3 日志切割(可以参靠日志篇的日志切割)

mv access.log bak.log #先备份日志文件
./nginx -s reopen #重新生成日志文件

4 其它指令

./nginx -h #查看帮助
./nginx -v #查看版本
./nginx -g #指定配置指令
./nginx -p #指定运行目录
./nginx -t #检查配置文件是否含有错误
信号
kill -SIGHUP 12717 #发送SIGHUP信号, 这个也是和reload一的效果 重新加载
kill -SIGTERM 15534 #发送停止信号

在这里插入图片描述
Master:
CHLD 当worker进程结束时,会向Master进行发送CHLD信号,从而监控worker进程。
管理worker进程:
TERM,INT 立刻停止
QUIT 立刻退出
HUP 重载配置文件
USR1 从新打开日志文件,做日志切割
上面这几个命令可以直接用./nginx -s 向master发送
下面这两个命令只能通过kill发送,在热部署的时候使用
USR2
WINCH

Worker:和上面的是对应的,但是通常不用,一般是向Master进程发送停止信号,因为我们希望Master来管理worker进程,当Master收到信号以后会发送到worker进程。
TERM,INT 立刻停止
QUIT 立刻退出
USR1 从新打开日志文件,做日志切割
WINCH

Nginx命令行 -s 发送的四个命令 reload、reopen、stop、quit 分别对应于向master进程发送信号 HUP、USR1、TERM、QUIT。
nginx命令行
启动nginx以后,会讲pid记录到文件中,通常是安装目录下的logs/nginx.pid 记录了Master的进程pid,当我们执行命令行的时候其实就是读取这个pid然后向这个进程发送信号,也就是后面的 reload、reopen、stop、quit这四个是为了方便我们使用更直观。

reload流程:
1 向Master进程发送HUP信号(reload命令)
2 Master进程校验配置语法是否正确
3 Master进程打开新的监听端口
4 Master 进程用新配置启动新的worker进程
5 Master进程向老worker进程发送QUIT信号
6 老worker进程关闭监听句柄,处理完当前连接后结束进程。
在这里插入图片描述
当发送reload命令的时候,Master会启动四个新的worker进程,图中用黄颜色代替。然后新的连接全部会转到新的进程,老连接会继续在老进程处理,处理完毕以后就会自动关闭。还有一种情况就是老连接报错了,倒是老进程一直被占用,比较新的nginx也提供了新的配置worker_shutdown_timeout ,这个配置项设置超时时间,如果超过了一个小时则强制结束。

热升级流程
1 将旧nginx替换成新的nginx文件(注意备份)
2 向Master发送USR2信号
3 Master进程修改pid文件名,加后缀.oldbin
4 master 进程用新nginx文件启动新Master进程
5 向老Master进程发送QUIT信号,关闭Master进程
6 回滚:向老Master发送hub,向新Master发送
在这里插入图片描述

优雅的关闭worker进程:
不能直接关闭连接,会导致错误,我们需要识别当nginx没有处理连接的时候来关闭。但是nginx对于websoket,tcp,udp不识别到底到那个报文才算结束,所以我们优雅的关闭一般是针对HTTP。
1 设置定时器 worker_shutdown_timeout
2 关闭监听句柄
3 关闭空闲连接 连接池会有一些空闲连接
4 在循环中等待全部连接关闭 处理完http以后,会关闭当前使用的连接。
4 退出进程 当等待时间超过前面的配置时会强制关闭。

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

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

相关文章

leetcode:环形链表

题目描述 题目链接:141. 环形链表 - 力扣(LeetCode) 题目分析 我们先了解一个知识:循环链表 尾结点不指向NULL,指向头就是循环链表 那么带环链表就意味着尾结点的next可以指向链表的任意一个结点,甚至可…

2024年测试工程师必看系列之Requests_模块_知识点总结

【文章末尾给大家留下大量的福利喔】 1,导入requests模块 get请求: url host https://www.baidu.com/s headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.…

Java --- JVM之垃圾回收相关知识概念

目录 一、System.gc() 二、内存溢出与内存泄漏 2.1、内存溢出 2.2、内存泄漏 三、Stop the world 四、垃圾回收的并行与并发 4.1、并发 4.2、并行 4.3、并行 vs 并发 4.4、垃圾回收的并发与并行 五、安全点与安全区域 5.1、安全点 5.2、安全区域 六、引用 6.1…

开发上门洗衣洗鞋小程序都需要考虑哪些经营场景

互联网的高速发展让很多行业都转变了传统的服务模式,很多需要到店的服务都提供了上门的服务方式,洗护行业也是如此,越来越多的城市都开始流行上门洗衣洗鞋,要做上门的服务模式的话,就需要有一个小程序为载体&#xff0…

点击这里,获取数据治理加速器!

数据管理员:又双叒叕…盘一遍数据,这种工作究竟还要重复多少次?! • 上上个月,发现数据有些问题,我把数据盘了一遍,梳理完数据的关联表才定位到问题; • 上个月,进行数据…

redis之高可用

(一)redis之高可用 1、在集群当中有一个非常重要的指标,提供正常服务的时间的百分比(365天)99.9% 2、redis的高可用的含义更加广泛,正常服务是指标之一,数据容量的扩展、数据的安全性 3、在r…

ueditor整合到thinkPHP里

<?phpnamespace app\ueditor\controller;use think\Controller;class Ueditor extends Controller {//首页public function upload(){//header(Access-Control-Allow-Origin: http://www.baidu.com); //设置http://www.baidu.com允许跨域访问//header(Access-Control-Allow…

2023亚太杯数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 最短时…

使用JMX监控ZooKeeper和Kafka

JVM 默认会通过 JMX 的方式暴露基础指标,很多中间件也会通过 JMX 的方式暴露业务指标,比如 Kafka、Zookeeper、ActiveMQ、Cassandra、Spark、Tomcat、Flink 等等。掌握了 JMX 监控方式,就掌握了一批程序的监控方式。本节介绍 JMX-Exporter 的使用,利用 JMX-Exporter 把 JMX…

ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)

目录 背景遇到的问题及解决步骤1、找不到工程和库问题分析问题解决 2、 实时错误91&#xff0c;对象变量或with块变量未设置问题分析问题解决 3、文件dsn配置问题什么是dsn文件&#xff0c;内容是什么&#xff0c;作用是什么ODBC配置dsn文件配置文件dsn默认路径ODBC 32位和64位…

股票统计信息(七)

7-统计信息 文章目录 7-统计信息一. 股票周级别统计信息二. 查询可支持的所有的股票资金类型三. 股票图形统计信息四. 查询当前用户自选表里面最近十天的交易信息五. 查看天/星期范围统计的历史记录六. 查看最近多少天某个属性的涨跌幅度值 一. 股票周级别统计信息 接口描述: …

【Spring】使用xml配置AOP

文章目录 1.前言2.xml配置AOP3. 总结 1.前言 在之前的学习中,都是使用注解的方式进行AOP的配置.其实使用xml配置文件也可以配置AOP. 2.xml配置AOP xml配置AOP方法如下: 添加相关依赖 <dependencies><dependency><groupId>org.springframework</groupId…

数学建模之插值法及代码

发现更多知识&#xff0c;欢迎访问Cr不是铬的个人网站 引言 数模比赛中&#xff0c;常常需要根据已知的函数点进行数据、模型的处理和分析&#xff0c;而有时候现有的数据是极少的&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学的方法&#xff0c;“模…

www.testfire.nets渗透测试报告

www.testfire.nets渗透测试报告 一、测试综述 1.1.测试⽬的 通过实施针对性的渗透测试&#xff0c;发现testfire.net⽹站的安全漏洞&#xff0c;锻炼自己的渗透水平 1.2.测试范围 域名&#xff1a;www.testfire.net IP:65.61.137.117 测试时间&#xff1a; 2023年11月…

Go 语言中 For 循环:语法、使用方法和实例教程

for循环用于多次执行特定的代码块&#xff0c;每次都可以使用不同的值。每次循环执行都称为一次迭代。for循环可以包含最多三个语句&#xff1a; 语法 for 语句1; 语句2; 语句3 {// 每次迭代要执行的代码 }语句1&#xff1a;初始化循环计数器的值。语句2&#xff1a;对每次循环…

第十九章Java绘图

9.1.1——Graphics类 Graphics类是所有图形上下文的抽象基类&#xff0c;它允许应用程序在组件以及闭屏图像上进行绘制&#xff0c;Graphics类封装了Java支持的基本绘图操作所需要的状态信息&#xff0c;主要包括颜色&#xff0c;字体&#xff0c;画笔&#xff0c;文本&#xf…

composer切换全局镜像源的方法

composer 默认配置中的镜像地址为国外的&#xff0c;在下载一些依赖包的时候会感觉很慢。当然国内也有很多composer镜像地址的&#xff0c;比如阿里云&#xff0c;腾讯云等。下面的博文73so博客就和大家说说&#xff0c;如何将composer的默认镜像改为国内镜像源的方法。 compo…

Java-认识String类

本章重点&#xff1a; 1. 认识 String 类 2. 了解 String 类的基本用法 3. 熟练掌握 String 类的常见操作 4. 认识字符串常量池 5. 认识 StringBuffer 和 StringBuilder 1.String类的重要性 在C语言中已经涉及到字符串了&#xff0c;但是在C语言中要表示字符串只能使用字符数组…

Selenium自动化测试详解

最近也有很多人私下问我&#xff0c;selenium学习难吗&#xff0c;基础入门的学习内容很多是3以前的版本资料&#xff0c;对于有基础的人来说&#xff0c;3到4的差别虽然有&#xff0c;但是不足以影响自己&#xff0c;但是对于没有学过的人来说&#xff0c;通过资料再到自己写的…