今天我们来学习 nginx 的 重载、热部署、日志分割功能

重载:当我们需要修改配置文件中的一些值,我们可以直接修改该配置文件,然后重新启动 nginx 服务,就可以实现在 nginx 不停止服务的情况下,使用了我们最新修改过的配置文件。

重载example:

step1:

# 打开配置文件,设置配置文件中的 tcp_nopush 选项为开启,然后保存退出
$ vim conf/nginx_conf

step2: 重新启动 nginx 服务,此时 nginx 服务就可以使用新的配置文件了

$ sudo ./nginx -s reload

热部署:我们在不停止服务的情况下,对 nginx 重新进行部署。比如我们升级了 nginx 版本(又称版本升级),则该功能可以使我们的应用平滑的过渡到新部署的高版本的 nginx 服务上。

热部署 example:

step1: 首先以同样的方式编译更高版本的 nginx, 然后将高版本的 sbin/nginx 二进制可执行文件替换掉我们要升级的 nginx 服务用的 nginx 文件

# 注:该旧版本 nginx 服务正在运行的情况下进行下述操作
# 本机器开启的 nginx 服务版本为 nginx-1.12.
# 重新编译的 nginx 版本为 nginx-1.16.,安装目录为 nginx- 文件夹下
# 用新编译生成的 nginx 二进制文件覆盖掉正在使用的 nginx 旧版本二进制文件 $ mv nginx nginx.old // 备份一下旧版本的 nginx 文件
$ sudo cp /home/zhangpeng/nginx-/sbin/nginx ./

此时查看一下我们正在运行的 nginx 服务:

注:从上图可以看出 master 进程的 PID 为 3278,worker 进程的 PID 为 3287,父进程为 master 进程

step2: 向 master 进程发送 USR2 信号,此时再查看一下 nginx 进程

$ sudo kill -USR2 

注:此时我们观察可以发现:给老的 master 进程发送 USR2 信号后,老的 master 进程生成了新 master, 新的 master 生成了新的 worker。同时老的 nginx 进程就不再监听 80 号端口了,这样就可以实现从老的 nginx 服务到新的 nginx 服务进行平滑过渡了。

step3:向老的 nginx master 进程发送 WINCH 信号告诉 master 进程请优雅的关闭你的 worker 进程

注:此时可以发现:老的 nginx master 中的 worker 都已经全部关闭了,但是此时老的 nginx master 进程还存在。存在的原因是:有些情况下我们需要将版本退回到旧的版本,这时,我们就可以根据老的 nginx master 把它的 worker 进程再拉起来!(发送 RELOAD 信号拉起 worker,然后再关闭新的 master 进程就可以了)

日志分割:在 nginx 不停止运行的情况下,把当前的日志备份到另外一个文件中。

日志分割 example:

# 进入 logs 目录
# 将 error.log 备份为 error.log.bak 文件
# 此时重新开启 nginx 服务,发送 reopen 信号,会重新生成一个新的 error.log 文件
# 中间的日志文件不会有缺少 $ mv error.log error.log.bak
$ sudo ../sbin/nginx -s reopen

注:但是正常情况下,我们不会这样使用,我们一般会编写一个日志分割的脚本文件,然后定时执行这个脚本文件即可。一般我们用 crontab 来开启定时计划,在 Ubuntu 下,是系统默认安装的,直接使用即可,我会在 Ubuntu 分类下单独写一篇博客来介绍 crontab 的使用。

Nginx系列p2:重载,热部署,日志分割的更多相关文章

  1. nginx日志分割配置实例

    Nginx没有类似Apache的cronolog日志分割处理的功能,但是,可以通过nginxNginx的信号控制功能利用脚本来实现日志的自动切割.请看下面的一个实例.Nginx对日志进行处理的脚本: ...

  2. Nginx系列0:Nginx学习历程

    Nginx学习历程 一.初识Nginx 1.Nginx适用于哪些场景 (1)静态资源服务 通过本地文件系统提供服务 (2)反向代理服务 Nginx的强大性能 缓存 负载均衡 (3)API服务 Open ...

  3. nginx命令行及演示:重载、热部署、日志切割

    重载配置文件 nginx -s reload 热部署(升级nginx) 首先备份二进制文件 cp nginx nginx.old  拷贝新版本的nginx替换以前的nginx二进制文件 cp  ngi ...

  4. Nginx 热部署和日志切割,你学会了吗?

    上篇文章,我们已经安装好 Nginx,并且配置好 Nginx 文件后,这个时候我就需要操作 Nginx 的命令行了,这篇文章主要讲解 Nginx 命令行相关知识,并通过日常遇到的热部署.切割日志文件场 ...

  5. Nginx热部署 平滑升级 日志切割

    1.重载 修改nginx配置文件之后,在不影响服务的前提下想加载最新的配置,就可以重载配置即可. 操作如下: 1)修改nginx配置文件 2)nginx -t     检查nginx文件语法是否有误 ...

  6. nginx 直接在配置文章中设置日志分割

    直接在nginx配置文件中,配置日志循环,而不需使用logrotate或配置cron任务.需要使用到$time_iso8601 内嵌变量来获取时间.$time_iso8601格式如下:2015-08- ...

  7. Nginx常用日志分割方法

    方式一: nginx cronolog日志分割配置文档,根据下面方法,每分钟分割一次NGINX访问日志. 1.nginx日志配置 access_log /var/log/nginx/access.lo ...

  8. Nginx高性能服务器安装、配置、运维 (6) —— Nginx日志及日志分割

    七.Nginx日志及日志分割 (1)Nginx日志文件 查看Nginx配置文件: 找到access_log,yum安装默认存储在/var/log/nginx目录下,且默认main格式: main格式定 ...

  9. nginx 日志分割(简单、全面)

    Nginx 日志分割 因业务需要做了简单的Nginx 日志分割, 第1章 详细配置如下. #建议在mkdir  /home/shell  -p 专门写shell 脚本位置 root@localhost ...

随机推荐

  1. NSQ学习记录

    一.简介 NSQ是一个基于Go语言的开源的分布式实时消息平台,他的代码托管在GitHub上. NSQ可用于大规模系统的实时消息服务,它的设计目标是为在分布式环境下提供一个强大的去除中心化的分布式服务架 ...

  2. Luogu P3263 [JLOI2015]有意义的字符串

    Link 设\(e=\frac{b+\sqrt d}2,i=\frac{b-\sqrt d}2\). 显然\(f_n=e^n+i^n\)是一个整数,且\(f_n=(e+i)f_{n-1}+eif_{n ...

  3. delphi环境变量

    @SET BDS=C:\Program Files (x86)\Embarcadero\RAD Studio\7.0 @SET BDSCOMMONDIR=C:\Users\Public\Documen ...

  4. #$d#$a什么意思

    #$d#$a什么意思 qjh.693111级分类:外语被浏览37次2013.05.12   满意答案 vgrwi 采纳率:50%12级 2013.05.13 回车换行 换成十进制就是 #13#10

  5. 从植发AI看智能手术机器人的国产化之路

    在工作和生活的双重压力下,很多80后乃至90后的青年都"光荣"地加入了"脱发一族".为了拯救发际线或是不变成"地中海",很多人从此走上了寻医 ...

  6. springboot启动报错:Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.zxkj.lockserver.dao.CompanyDao' available: expected at least 1 bean which qua

    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of ty ...

  7. mysql提示 Lock wait timeout exceeded解决办法 事务锁死

    查询  select concat('KILL ',id,';') from information_schema.processlist; 复制结果 新建sql脚本粘贴并执行

  8. 洛谷 P1247 取火柴游戏

    题目传送门 暴力 \((\)由于我这样的初中蒟蒻不\((bu)\)喜\((hui)\)欢\((xie)\)数学证明,所以题解中的证明全是其他大佬的题解已经多次证明过的,这里就不再啰嗦了.\()\) - ...

  9. c# 外挂操作(内存操作)(内存读写取窗口句柄移动窗口取模块地址)工具类

    来源于网上  参考 https://www.cnblogs.com/fuhua/p/5877781.html 等众多文章 详情取看我第二个例子封装功能较多 https://www.cnblogs.co ...

  10. swarm docker-compose.yml NFS 搭建LNMP

    列表: 172.16.0.40     (swarm-master) 172.16.0.160     (swarm-worker) 172.16.0.170     (swarm-worker) 1 ...