1.重载

修改nginx配置文件之后,在不影响服务的前提下想加载最新的配置,就可以重载配置即可。

操作如下:

  1)修改nginx配置文件

  2)nginx -t     检查nginx文件语法是否有误

  3)nginx -s reload    重载nginx配置

2.热部署(升级nginx版本)

比如我把版本冲nginx1.14-2升级到nginx1.16.1;

我之前nginx安装目录为:/data/geek/nginx目录

操作如下:

  注意:千万不要make insatll 否则会把二进制执行文件复制到/data/geek/下的nginx目录 覆盖之前的文件

  1)下载最新的nginx1.16.1版本

  2)执行./configure --prefix=/home/geek/nginx     #新版本的nginx执行这步--prefix目录可以随便指,最后千万不能make install。否则nginx二进制文件会找新的nginx生成的文件。

    

  3)  编译make,make之后会在objs下面生成一个nginx二进制执行文件

    

  4)备份老的nginx二进制配置文件

[root@nginx sbin]# cd /data/geek/nginx/sbin

[root@nginx sbin]# cp nginx nginx.old

 

  5)拷贝objs目录下新的nginx二进制执行文件到/home/geek/nginx/sbin/目录

[root@nginx objs]# pwd
/data/geek/nginx-1.16.1/objs
[root@nginx objs]# ls
autoconf.err nginx ngx_auto_config.h ngx_modules.c src
Makefile nginx.8 ngx_auto_headers.h ngx_modules.o
[root@nginx objs]# cp nginx /data/geek/nginx/sbin/ -f
cp: overwrite ‘/data/geek/nginx/sbin/nginx’? y
[root@nginx objs]#

  6)检查当前Nginx版本是否为新版本

[root@nginx sbin]# pwd
/data/geek/nginx/sbin
[root@nginx sbin]# ls
nginx nginx.old
[root@nginx sbin]# ./nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
configure arguments: --prefix=/data/geek/nginx
[root@nginx sbin]#

  注意:虽然当前版本已经变成了1.16.1版本,这个时候表面上看起来是更新成了新版本,但还是旧版本的在工作,接收客户端请求的仍然是1.14.2版本的nginx,这就有了下面的平滑升级

3.平滑升级

  继续上面的操作来:

  1)kill -USR2 旧版本的主进程号 (让旧版本的worker进程不再接受请求)

    这步操作完之后,新版本的nginx进程就起来了,ps -ef |grep nginx 就可以看到二个nginx的master进程,旧的nginx master进程已经不在监听80端口了。新的请求由新的nginx进程处理

  2)kill -WINCH 旧版本的主进程号 (关闭旧版本的worker进程)

  3)这个时候就已经平滑升级完毕了

命令 作用
kill -USER2 进程号 不再让worker进程接受请求,当前请求处理完就让worker进程退出
kill -WINCH 进程号 处理完关闭
kill -HUP 进程号 启动进程

最后提供一张平滑升级流程图:

  

4.日志切割

  1)备份之前的日志 

[root@nginx logs]# ll
total 12
-rw-r--r-- 1 root root 1721 Nov 28 20:31 access.log
-rw-r--r-- 1 root root 1686 Nov 28 20:31 error.log
-rw-r--r-- 1 root root 6 Nov 28 20:32 nginx.pid [root@nginx logs]# ls
access.log error.log nginx.pid
[root@nginx logs]# mv access.log access.log.bak

 这里直接用mv命令备份日志文件就可以,因为linux文件系统中,改名并不会影响已经打开文件的写入操作,内核inode不变,这样就不会出现丢日志了。

  2)nginx -s reopen 重新生成log文件

[root@nginx logs]# ../sbin/nginx -s reopen
[root@nginx logs]# ll
total 12
-rw-r--r-- 1 nobody root 0 Nov 28 20:36 access.log
-rw-r--r-- 1 root root 2109 Nov 28 20:35 access.log.bak
-rw-r--r-- 1 nobody root 1747 Nov 28 20:36 error.log
-rw-r--r-- 1 root root 6 Nov 28 20:32 nginx.pid

  

4.1一般写一个脚本然后加个定时任务进行切割,如果我下面的脚本放在crontab里一天执行一次

kill -USR1 nginx进程号    也是重新生成日志文件,和nginx -s reopen是一样的。

Nginx热部署 平滑升级 日志切割的更多相关文章

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

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

  2. 原创|1分钟搞定 Nginx 版本的平滑升级与回滚

    Nginx无论是对于运维.开发.还是测试来说,都是日常工作需要掌握的一个知识点,之前也写过不少关于Nginx相关的文章: Nginx服务介绍与安装 Nginx服务配置文件介绍 Nginx配置虚拟主机 ...

  3. nginx信号及平滑升级

    1.nginx信号 nginx进程处理命令: kill -signals PID PID即nginx进程ID signals的参数解释如下所示: TERM,INT快速关闭进程 QUIT优雅的关闭,如果 ...

  4. Nginx安装、平滑升级与虚拟机配置

    Nginx 高性能HTTP反向代理服务器,也是 LAMP/POP3/SMTP代理服务器 由内核和模块组成,内核通过找配置文件讲客户端请求映射到一个location(location是Nginx配置中的 ...

  5. nginx中有关命令和日志切割,配置文件加载的详细阐述

    一.Nginx简介 Nginx (“engine x”) 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器.Nginx 已经在俄罗斯最大的门户网站── Ram ...

  6. Nginx 热部署最版本

    L10 进入nginx里的sbin目录 拷贝原先的做备份 cp nginx nginx.old 然后将已经编译好的nginx二进制文件复制到sbin目录下并覆盖原有的二进制文件 kill -USR2 ...

  7. Nginx服务器的平滑启动、平缓停止、平滑升级

    注:Nginx服务在运行时,会保持一个主进程(master process)和一个或多个工作进程(worker process). 每一个进程都会有一个PID进程号,可以通过向主进程的PID进程号发送 ...

  8. nginx之热部署,以及版本回滚

    热部署的概念:当从老版本替换为新版本的nginx的时候,如果不热部署的话,会需要取消nginx服务并重启服务才能替换成功,这样的话会使正在访问的用户在断开连接,所以为了不影响用户的体验,且需要版本升级 ...

  9. Nginx 平滑升级、Nginx的一些基础配置

    # Nginx 平滑升级 # 方案一:使用Nginx服务信号进行升级 # 1.将就版本的sbin目录下可执行nginx进行备份(mv nginx nginxold) # 2.将新版本 configur ...

随机推荐

  1. 第九篇 Flask的before_request和after_request

    Flask我们已经学习很多基础知识了,现在有一个问题 我们现在有一个 Flask 程序其中有3个路由和视图函数,如下: from flask import Flask app = Flask(__na ...

  2. 数据文件包解析工具类 RandomAccessFile

    public class ReadTextFile { public static void main(String[] args) { pic2txt(); parseFrmFile(); //ur ...

  3. Security整合spring boot

    Security整合spring boot 1.基础概念 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spri ...

  4. 第三十五章 POSIX共享内存

    POSIX共享内存函数介绍 shm_open 功能: 用来创建或打开一个共享内存对象 原型: int shm_open(const char *name, int oflag, mode_t mode ...

  5. UVA12433 【Rent a Car】

    这题应该算是比较难的一道网络流的题,(但却在我校OJ考试上出现了),但是大家只要能理解此图的建边方式就行. 假设有5天的租车需求,虚拟出2*n+2 即 12个节点,0为源点,12为汇点. 1,源点到1 ...

  6. 2018年7月份前端开源软件TOP3

    基于 ThinkPHP5 + Bootstrap 的后台开发框架 FastAdmin FastAdmin 详细介绍 FastAdmin是一款基于 ThinkPHP5 + Bootstrap 的极速后台 ...

  7. python——inspect模块

    inspect模块常用功能 import inspect # 导入inspect模块 inspect.isfunction(fn) # 检测fn是不是函数 inspect.isgenerator((x ...

  8. mysql group by使用方法注意

    mysql group by使用方法注意 group by 后面只用能用having 不能加 where等域名

  9. Linux\CentOS Tomcat 配置

    需要注意的是:安装 Tomcat 之前需要把 jdk 安装好. 一.下载安装包 - 安装可以在官网自行下载,下载 tar.gz 包便可. 二.解压缩: tar -zxvf apache-tomcat- ...

  10. Win7无法远程桌面

    Win7在设置里开启允许其他计算机远程连接,但局域网计算机还是连不上: 然后点击上面的为远程桌面启用windows防火墙例外,发现远程桌面是允许的: 实际上这个不是,问题的真正原因在于用于远程的338 ...