Nginx详解之版本平滑更新回退,日志切割

本文介绍了Nginx的基础知识,包括其作为高性能HTTP和反向代理服务器的角色。接着详细阐述了如何在RHEL7.3环境中平滑地更新和回退Nginx版本,强调了在更新过程中处理旧版本worker进程的重要性。最后讨论了Nginx日志切割的必要性,并简单展示了日志管理的步骤。
摘要由CSDN通过智能技术生成

一.Nginx介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等
Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。

二.Nginx版本更型和版本回退

实验环境:rhel7.3虚拟机,两款不同版本的nginx安装包

1.获取两款不同版本nginx的安装包,可以通过官网下载

添加链接描述
在这里插入图片描述在这里插入图片描述

2.解压安装包

tar zxf nginx-1.15.8.tar.gz 
cd nginx-1.15.8
vim CHANGES   ##这里可以看见nginx最初的版本

在这里插入图片描述

 vim /etc/security/limits.conf  ##这里可以修改最大文件数

在这里插入图片描述

3.关闭debug日志,进行编译安装

vim auto/cc/gcc在这里插入图片描述

   yum install -y pcre-devel zlib-devel gcc ##下载依赖包,编译软件
    cd nginx-1.15.8                         ##在该目录下预编译
   ./configure  --prefix=/usr/local/nginx --with-file-aio
   make
   make install

4.修改配置文件,启动

useradd nginx   		##创建nginx用户
cd nginx-1.15.8
 vim conf/nginx.conf

在这里插入图片描述
/usr/local/nginx/sbin/nginx

5.查看当前版本号

/usr/local/nginx/sbin/nginx -t  ##查看配置文件语法的正确性
 /usr/local/nginx/sbin/nginx -V  ##查看当前nginx版本及编译所加的参数

在这里插入图片描述

6.安装高版本的nginx,模拟版本更型

安装过程大同小异

   89  tar zxf nginx-1.16.0.tar.gz 
   90  cd nginx-1.16.0
   91  ls
   92  /usr/local/nginx/sbin/nginx  -V
   93  ./configure  --prefix=/usr/local/nginx --with-file-aio
   94  cd objs/
   95  ls
   96  cd ..
   97  make
   98  cd objs/
   99  ls
  100  cd /usr/local/nginx/sbin/
  101  ls

7.备份原有nginx,一旦更型失败立刻回退

  100  cd /usr/local/nginx/sbin/
  101  ls
  102  cp nginx nginx.old   ##做好二进制文件的备份
  103  ls
  104  ./nginx -V
  105  cd -
  106  ls
  107  cp -f nginx /usr/local/nginx/sbin/nginx  ##将新版本启动脚本复制到旧版本的目录下

在这里插入图片描述

8.查看进程,关闭原版本进程

ps -ef | grep nginx
可以看到此时nginx的一个master进程和两个worker进程

在这里插入图片描述

  kill -USR2 3787  
3787为老版本master进程号,在杀掉此进程的基础上启用新版本进程
 ps -ef | grep nginx

在这里插入图片描述

启用新版本的nginx后,可以看到新版本的master和worker进程号,但旧版本的worker进程依然在接受请求,用户访问依然访问旧版本的nginx
  kill -WINCH 3787
当老版本的nginx接受完所用请求后,关闭所有连接。此命令会将旧版本的的worker进程停掉,不会将master进程停掉
  ps -ef | grep nginx

在这里插入图片描述

/usr/local/nginx/sbin/nginx -V

在这里插入图片描述

版本更新成功!!

9.版本回退

在日常生产中,如果版本更新一旦失败,就要立刻停止更新,还原之前的版本
cd /usr/local/nginx/sbin/
cp -f nginx.old nginx    ##将刚才备份的文件还原
 ps -ef | grep nginx
  kill -USR2 6340

在这里插入图片描述

kill -HUP  3787
将旧版本的master进程拉起,用来产生新的master进程接受用户请求

在这里插入图片描述

ps -ef | grep nginx
 kill -WINCH 6340
ps -ef | grep nginx

在这里插入图片描述

/usr/local/nginx/sbin/nginx -V

在这里插入图片描述

版本回退成功!!

三.Nginx日志切割

nginx作为服务器时每天都会产生大量的日志,如果不进行管理将会占用大量的内存,所以必须进行日志切割再将日志进行压缩
1.正常备份
cd /usr/local/nginx/logs
[root@server1 logs]# ls				##在此目录下是nginx所产生的日志
access.log  error.log  nginx.pid
[root@server1 logs]# mv access.log `date +%F -d -1day`access.log
[root@server1 logs]# ls
2019-05-06access.log  error.log  nginx.pid
[root@server1 logs]# /usr/local/nginx/sbin/nginx -s reopen
[root@server1 logs]# ls
2019-05-06access.log  access.log  error.log  nginx.pid
当然这里只是演示一下备份的原理
2.编写脚本
 vim backup.sh
 #!/bin/bash

LOG_PATH=/usr/local/nginx/logs/oldlogs
CUR_LOG_PATH=/usr/local/nginx/logs
YESTEDAY=$(date +%F -d -1day)

mv $CUR_LOG_PATH/access.log $LOG_PATH/${YESTEDAY}_access.log
mv $CUR_LOG_PATH/error.log $LOG_PATH/${YESTEDAY}_error.log

kill -USER1 $(cat /usr/local/nginx/logs/nginx.pid)
chmod +x backup.sh
vim /etc/cron.d/file    ##写入到系统日志文件中,让其定期执行
0   0  *  *  *   /bin/bash  /us	r/local/nginx/logs/backup.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值