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

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.hqwc.cn/news/206575.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI虚拟主播系统+智能交互+AI词库+虚拟形象 附带完整的搭建教程

近几年电商直播带货热潮持高不跌,很多商家企业都会选择线上直播卖产品,与此同时,虚拟主播开始盛行,与真人主播相比,品牌虚拟主播无档期风险、离职风险、人设稳定更可控。 AI虚拟主播的不是为了取代真人主播而开发&…

一键去水印免费网站快速无痕处理图片、视频水印

水印问题往往是一个大麻烦。即使我们只想将这些照片保留在我们的个人相册中以供怀旧,水印也可能像顽固的符号一样刺激我们的眼睛。为了解决这个问题,我们需要不断探索创新的解决方案,让我们深入研究一款强大的一键去水印免费网站“水印云”。…

什么是开关电源测试系统?如何用它进行测试?

开关电源测试系统是针对开关电源测试而开发的一种智能自动化测试系统,打破传统测试程序与缺陷,满足客户新的测试需求,助力客户解决测试难点,顺利完成开关电源测试,提高测试效能。那么开关电源自动化测试方案的流程是什…

行情分析——加密货币市场大盘走势(11.22)

大饼昨日晚上打了止损,笔者入场了空单,目前来看上涨乏力,下跌是必然的,昨日的下跌跌破了蓝色上涨趋势线,而今日白天开始反弹,别着急抄底,下跌还没有结束。 空单策略:入场36500 止盈…

IBM ELM—系统工程全生命周期管理平台

产品概述 Engineering Lifecycle Management是IBM提供的工程全生命周期管理组合工具,帮助企业降低开发成本,应对开发挑战并更快地发展其流程和实践。 随着产品变得更加复杂且数字化,传统的工程开发不再能及时且有效地满足系统工程的复杂度&a…

麒麟v10系统,在虚拟机上直接连公司同一个局域网,设置静态ip

1.更改配置信息 cd /etc/sysconfig/network-scripts vi ifcfg-ens33 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_AUTOCONFyes IPV6_DEFROUTEyes IPV6_FAILURE_FATALno IPV6_ADDR_GEN_MODEstable-pri…

【Java】基于SaaS模式的Java基层医院卫生健康云HIS系统源码

一、模板管理 模板分为两种:病历模板和报表模板。模板管理是运营管理的核心组成部分,是基层卫生健康云中各医疗机构定制电子病历和报表的地方,各医疗机构可根据自身特点特色定制电子病历和报表,制作的电子病历及报表可直接在业务…

SageMath安装

Sagemath工具是免费开源的,针对数学计算的一个工具。 网页版免安装:https://sagecell.sagemath.org/ Sagemath是根据Linux系统编写的,所以Windows上使用的话,会创建一个Linux系统运行。 1. 安装 Windows本地安装参考&#xff1…

童装店铺如何通过软文增加客流量

在信息超负载、媒介粉尘化、产品同质化多重因素下,传统营销疲态尽显、日渐式微,很难支撑新环境下品牌和企业的持续增长。聚焦童装行业更是如此,一方面用户迭代速度快,另一方面,新时代父母的育儿观念更加精细化&#xf…

10月起个税系统升级,3个月个税零申报将收到提示

近日,自然人电子税务局扣缴端升级了,升级后对于工资薪金收入连续三个月为零的纳税人,系统会自动出现以下提示。这个提示主要为了避免企业长期对已经离职的员工进行零申报,导致数据不准确和资源浪费。HR在申报个税时,一…

ubuntu cutecom串口调试工具使用方法(图形界面)

文章目录 Ubuntu下使用CuteCom进行串口调试使用指南什么是CuteCom?主要特点 安装CuteCom使用APT包管理器从源码编译安装 配置串口CuteCom界面解析(启动cutecom)使用CuteCom进行数据发送和接收配置串口参数数据接收数据发送 高级功能和技巧流控…