Nginx热部署 平滑升级 日志切割
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热部署 平滑升级 日志切割的更多相关文章
- Nginx 热部署和日志切割,你学会了吗?
上篇文章,我们已经安装好 Nginx,并且配置好 Nginx 文件后,这个时候我就需要操作 Nginx 的命令行了,这篇文章主要讲解 Nginx 命令行相关知识,并通过日常遇到的热部署.切割日志文件场 ...
- 原创|1分钟搞定 Nginx 版本的平滑升级与回滚
Nginx无论是对于运维.开发.还是测试来说,都是日常工作需要掌握的一个知识点,之前也写过不少关于Nginx相关的文章: Nginx服务介绍与安装 Nginx服务配置文件介绍 Nginx配置虚拟主机 ...
- nginx信号及平滑升级
1.nginx信号 nginx进程处理命令: kill -signals PID PID即nginx进程ID signals的参数解释如下所示: TERM,INT快速关闭进程 QUIT优雅的关闭,如果 ...
- Nginx安装、平滑升级与虚拟机配置
Nginx 高性能HTTP反向代理服务器,也是 LAMP/POP3/SMTP代理服务器 由内核和模块组成,内核通过找配置文件讲客户端请求映射到一个location(location是Nginx配置中的 ...
- nginx中有关命令和日志切割,配置文件加载的详细阐述
一.Nginx简介 Nginx (“engine x”) 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器.Nginx 已经在俄罗斯最大的门户网站── Ram ...
- Nginx 热部署最版本
L10 进入nginx里的sbin目录 拷贝原先的做备份 cp nginx nginx.old 然后将已经编译好的nginx二进制文件复制到sbin目录下并覆盖原有的二进制文件 kill -USR2 ...
- Nginx服务器的平滑启动、平缓停止、平滑升级
注:Nginx服务在运行时,会保持一个主进程(master process)和一个或多个工作进程(worker process). 每一个进程都会有一个PID进程号,可以通过向主进程的PID进程号发送 ...
- nginx之热部署,以及版本回滚
热部署的概念:当从老版本替换为新版本的nginx的时候,如果不热部署的话,会需要取消nginx服务并重启服务才能替换成功,这样的话会使正在访问的用户在断开连接,所以为了不影响用户的体验,且需要版本升级 ...
- Nginx 平滑升级、Nginx的一些基础配置
# Nginx 平滑升级 # 方案一:使用Nginx服务信号进行升级 # 1.将就版本的sbin目录下可执行nginx进行备份(mv nginx nginxold) # 2.将新版本 configur ...
随机推荐
- Shiro learning - 认证流程(3)
Shiro认证流程 在学习认证流程之前,你应该先了解Shiro的基本使用流程 认证 身份认证: 证明用户是谁.用户需要提供相关的凭证principals(身份标识)和Credentials (凭证,证 ...
- DOS批量重命名
下面有一些文件:dir /b *.*得到 144-10.1.4.150-1484707792127 2326-10.1.4.150-1484708376194 3682-10.1.4.150-1484 ...
- Bran的内核开发教程(bkerndev)-07 中断描述符表(IDT)
中断描述符表(IDT) 中断描述符表(IDT)用于告诉处理器调用哪个中断服务程序(ISR)来处理异常或汇编中的"int"指令.每当设备完成请求并需要服务事, 中断请求也会调用I ...
- HTML5+CSS:02用户注册表单
新的学期已开始接近两个月了,还记得是在国庆节那几天申请的博客账号,可过了一个月都还没开始写博客,(>_<)有点小偷懒了,不过,学习还是不能落下的,今写一个有点实践运用的关于 ...
- Flask:Flask的模板系统和静态文件
1.Flask模板系统 Django框架有自己独立的模板系统,而Flask是没有的,Flask默认采用jinjia2模板系统,jinjia2是仿写Django模板系统的一个第三方模块,但性能上要比Dj ...
- 在虚拟机上的关于NFS网络文件系统
小知识: NFS(Network Files System)即网络文件系统,NFS文件系统协议允许网络中的主机通过TCP/IP协议进行资源共享,NFS客户端可以像使用本地资源一样读写远端NFS服务端的 ...
- css实现鼠标悬浮后的提示效果
一.概述 很多时候网站中需要在鼠标划过小图标时,悬浮出提示性的文字.比如下图: 鼠标悬浮后的效果 这种效果可以使用css中的伪类hover来实现.但有时候搞不清两个元素的嵌套关系.使用了hover却没 ...
- vim编辑器介绍
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...
- 问题 L: 「Usaco2005 Feb」竞选划区O(∩_∩)O 纯属的暴力
题目描述 农场被划分为5x5的格子,每个格子中都有一头奶牛,并且只有荷斯坦(标记为H)和杰尔西(标记为J)两个品种. 如果一头奶牛在另一头上下左右四个格子中的任一格里,我们说它们相连. 奶牛要大选了. ...
- 如何提高web应用的吞吐量
这篇博文所列举的优化手段是针对比较传统项目,但是想提高系统的吞吐量现在时髦的技术还是那些前后端未分离, 使用nginx当成静态资源服务器去代理我们的静态资源 是谁限制了Throughput? 当我们对 ...