Nginx编译安装,信号,升级nginx

编译安装nginx:前面博客有写编译安装过程

systemctl stop firewalld

setenforce 0

mkdir /data
cd /data

wget http://nginx.org/download/nginx-1.18.0.tar.gz 

tar xf nginx-1.18.0.tar.gz

cd nginx-1.18.0/

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

./configure --prefix=/apps/nginx 

make -j2 ; make install

ln -s /apps/nginx/sbin/nginx /usr/local/sbin

nginx

curl 本机IP。看是否获取到了nginx首页

由于是配置安装,指定的安装路径在/apps/nginx下,其中conf为配置文件夹

 主配置文件nginx.conf

可以通过pstree -p | grep nginx查看进程数,发现主进程7483下只有一个子进程8212,这主要是由于主配置文件中work_processes来决定子进程数量。

打开该配置文件:

1、可以通过修改子进程数,来改变打开的进程数。

修改后需要重新加载,命令:nginx -s reload

cpu的亲缘性,能将nginx进程和cpu进行一一对应绑定。将worker_processes值修改为auto,那么系统有几个CPU就会产生几个子进程。

查看CPU个数:lscpu

修改为auto

重新加载,查看进程数。发现也是4个子进程。

我们通过查看nginx的主配置文件nginx.conf发现,work是子进程负责来自主进程分配的请求,交给work工作,构建响应报文(工作),但主进程负责分配任务。mastar + work进程。

主进程(master process):对外提供接口,对内转发,监控,读取nginx的配置文件,开启日志文件等。

子进程(工作进程)(work):接受来自主进程的响应,网络请求都有work进程处理,一般设置为核心数,都能够使用cpu资源,以防止进程数量过多导致占用cpu资源,io调用,获取响应报文,接收主程序指令,比如重启、升级和退出等。

nginx也可以单独作为命令去执行

nginx -t 检查语法

nginx -T检查语法并打印

以下不一一列举了,自行尝试:

nginx -v 显示版本

nginx -V 显示详细信息,包括编译信息

nginx -c 指定配置文件启动

nginx -s 发送信号,=kill

nginx -s reload 重新加载配置文件nginx.conf。生产环境中不能停掉重启,一般用来重新加载配置文件

nginx -s reopen 重新生成日志文件,或kill -s USR1 pid号

nginx -s USR2 飞行中升级,不影响正常运行的陈旭

-s选项:

nginx -s stop ; kill -9 (KILL); 立即停止

nginx -s quit ; kill -3 (QUIT); 优雅的退出,把所有的进程执行完退出

发送信号:分割日志:默认的日志文件在/apps/nginx/ogs/access.log中。

通过在另一台主机192.168.114.20上访问本机:curl 192.168.114.10。

可以发现有来自192.168.114.20的日志。我们修改日志文件名为access.log.bak,再创建一个access.log。

再次访问本机,在新日志文件中access.log看是否有记录。

可以发现,新创建的文件中不存在日志,依旧在老文件中。

那么我们需要向主进程发送信号:两种方式:nginx -s reopen 或 kill -s USR1 主进程PID号

主进程PID号通过pstree -p | grep nginx查看。

这里使用nginx -s reopen

再次访问本机,查看access.log文件是否有记录:

更新版本

下载nginx-1.20.2版本,作为新版本。到/usr/local/src/下。

解压并进入nginx-1.20.2,编译安装,指定模块:可以通过老版本的nginx -V查看编译信息。复制过来。

make 编译安装,不要make install否则会把老版本覆盖掉,不可取。

查看版本信息:相对路径。

需要将老的nginx改名备份以下。在/apps/nginx/sbin/nginx。

执行mv /apps/nginx/sbin/nginx /apps/nginx/sbin/nginx.bak

把新版本的复制进去:cp objs/nginx /apps/nginx/sbin/

可以查看一下:ll /apps/nginx/sbin/

通过-t选项检查语法,通过绝对路径执行。/apps/nginx/sbin/nginx -t

在想老版本主进程发送信号之前,查看老主进程号为:11961

向老版本主进程发送USR2信号后

 在logs下发现了一个nginx.pid.oldbin文件,它是原来的nginx.pid,为11961

 新老pid号:

此时存在两个nginx共同提供web服务。

删除老进程:kill -WINCH `cat /apps/nginx/logs/nginx.pid.oldbin`

``反撇,是执行``中命令,返回结果。也就是kill -WINCH 老pid号11961

优雅的关闭老进程的work进程。是指不影响work进程工作,执行完一个动作后关闭work进程。

 使旧的nginx work进程平滑停止,删除老进程号文件

向旧的nastar进程发送QUIT信号,关闭老mastar

在关闭老master前,发现升级出了问题,可以回滚向老master发送HUP,向新的master发送QUIT。

相关推荐

  1. NGINX安装升级

    2024-06-06 12:08:02       38 阅读
  2. Nginx编译后平滑升级

    2024-06-06 12:08:02       20 阅读
  3. Ubuntu 编译安装 nginx

    2024-06-06 12:08:02       33 阅读
  4. nginx如何编译安装?

    2024-06-06 12:08:02       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 12:08:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 12:08:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 12:08:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 12:08:02       20 阅读

热门阅读

  1. 前端 、Python 扁平化嵌套数组和应用场景

    2024-06-06 12:08:02       9 阅读
  2. 如何搭建开发一款看广告赚钱软件?

    2024-06-06 12:08:02       10 阅读
  3. spring整合kafka

    2024-06-06 12:08:02       6 阅读
  4. go语言接口之接口类型

    2024-06-06 12:08:02       9 阅读
  5. 爬山算法的详细介绍

    2024-06-06 12:08:02       9 阅读
  6. spring 事务失效的几种场景

    2024-06-06 12:08:02       8 阅读
  7. C#的线程锁

    2024-06-06 12:08:02       8 阅读
  8. django连接达梦数据库

    2024-06-06 12:08:02       9 阅读
  9. Lua使用方式介绍

    2024-06-06 12:08:02       11 阅读
  10. k8s中pod如何排错?

    2024-06-06 12:08:02       7 阅读
  11. C++学习笔记“类和对象”;运算符重载

    2024-06-06 12:08:02       11 阅读
  12. 二叉树的层平均值-力扣

    2024-06-06 12:08:02       9 阅读