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

本文详细介绍了Nginx服务器的版本更新流程,包括版本升级与回滚的操作步骤,以及如何进行Nginx日志的切割与压缩,确保服务器稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 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的安装包,可以通过官网下载
    https://www.nginx.com/

在这里插入图片描述

  1. 解压安装包

     tar zxf nginx-1.15.8.tar.gz 
     cd nginx-1.15.8
     vim /etc/security/limits.conf  ##这里可以修改最大文件数
    

在这里插入图片描述

  1. 关闭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
  1. 修改配置文件,启动

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

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

  1. 查看当前版本号

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

在这里插入图片描述

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

安装过程大同小异

   tar zxf nginx-1.16.0.tar.gz 
   cd nginx-1.16.0
   ls
   /usr/local/nginx/sbin/nginx  -V
   ./configure  --prefix=/usr/local/nginx --with-file-aio
   cd objs/
   ls
   cd ..
   make
   cd objs/
   ls
  cd /usr/local/nginx/sbin/
  ls
  1. 备份原有nginx,一旦更型失败立刻回退

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

在这里插入图片描述

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

     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

在这里插入图片描述
版本更新成功!!

  1. 版本回退
    在日常生产中,如果版本更新一旦失败,就要立刻停止更新,还原之前的版本

     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
    

当然这里只是演示一下备份的原理

  1. 编写脚本

      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、付费专栏及课程。

余额充值