LNMP (Nginx网站服务)&& nginx 平滑升级

目录

 1.1 Nginx的简介

1.2  Apache与Nginx的区别

 Nginx对比Apache的优势:

1.3  Nginx的进程 

Nginx的两个进程:

 同步,异步,阻塞,非阻塞的概念补充

阻塞与非阻塞

同步和异步

2.1 编译安装Nginx

2.1 .1 关闭防火墙,将安装nginx所需软件包传到/opt目录下

2.2 安装依赖包

2.3 创建运行用户与组

2.4 编译安装Nginx

2.5 检查、启动、重启、停止 nginx服务

2.7新版本升级:

2.8 添加 Nginx 系统服务

3.0 nginx平滑升级

前言

3.1、准备工作

3.2、make编译

3.3、平滑升级


 1.1 Nginx的简介

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。

对HTTP并发连接的处理能力高,单台物理服务器可支持30000~50000个并发请求。(实际操作,很多公司为了服务器的稳定,都会设置在20000个左右

Nginx的主要使用场景: 虚拟主机,反向代理,缓存,http

Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适用于多处理器环境,因此,在一个apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。

1.2  Apache与Nginx的区别

 Nginx对比Apache的优势:

  • 轻量级,nginx比apache 占用更少的内存及资源;
  • 静态处理,Nginx 静态处理性能比 Apache 高 ;
  • Nginx可以实现无缓存的反向代理加速,提高网站运行速度;
  • Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于硬件;
  • Nginx支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级;
  • nginx是异步进程,多个连接可以对应一个进程 ;apache是同步多进程,一个连接对应一个进程;
  • Nginx高度模块化,编写模块相对简单,且组件比Apache少
  • 高并发下nginx 能保持低资源低消耗高性能;
  • Nginx 配置简洁, Apache配置复杂

apache相对于nginx的优点 : 

  • Rewrite比nginx的rewrite强大 (rewrite的主要功能就是实现统一资源定位符URL的跳转)
  • 模块多,基本想到的都可以找到
  • 少bug, nginx的bug相对较多
  • 超稳定
  • Nginx处理动态请求是弱项,动态请求要Apache去做。

1.3  Nginx的进程 

Apache和Nginx的默认端口都是80,当你发先Nginx启动失败,导致的原因可能就是80端口被占用,而导致服务启动失败,可以修改服务的端口,从而实现两个服务的同时进行。

Nginx的两个进程:

master process:主进程(守护进程),用来管理工作进程。

worker process:工作进程,用来处理用户的请求。



 同步,异步,阻塞,非阻塞的概念补充

阻塞与非阻塞


阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务,函数只有在得到结果之后才会返回。


非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

同步和异步


同步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致


异步:一个服务的完成需要依赖其他服务时,只通知其他依赖服务开始执行,而不需要等待被依赖的服务完成,此时该服务就算完成了。被依赖的服务是否最终完成无法确定,因此它是一个不可靠的服务序列。
 


2.1 编译安装Nginx

2.1 .1 关闭防火墙,将安装nginx所需软件包传到/opt目录下

  1. systemctl stop firewalld

  2. systemctl disable firewalld

  3. setenforce 0

安装

2.2 安装依赖包

#nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。
yum -y install pcre-devel zlib-devel gcc gcc-c++ make

2.3 创建运行用户与组

#创建运行用户、组(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)
useradd -M -s /sbin/nologin nginx

2.4 编译安装Nginx

  • cd /opt                                                ##切换到opt目录下进行操作
  • tar zxvf nginx-1.12.2.tar.gz -C /opt/
  • cd nginx-1.12.2/
  • ./configure \
  • --prefix=/usr/local/nginx \                    #指定nginx的安装路径
  • --user=nginx \                                #指定用户名
  • --group=nginx \                                #指定组名
  • --with-http_stub_status_module                #启用 http_stub_status_module 模块以支持状态统计操作  VTS
  • ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/        #让系统识别nginx的操作命令

2.5 检查、启动、重启、停止 nginx服务

  • nginx -t                                #检查配置文件是否配置正确
  • #启动 nginx

  • 扩展
  •                                     
  • #停止
  • cat /usr/local/nginx/logs/nginx.pid        #先查看nginx的PID号
  • kill -3 <PID号>
  • kill -s QUIT <PID号>
  • killall -3 nginx                                          ##等进程结束后再杀死进程
  • killall -s QUIT nginx
  • #重载
  • kill -1 <PID号>
  • kill -s HUP <PID号>
  • killall -1 nginx
  • killall -s HUP nginx
  • #日志分割,重新打开日志文件
  • kill -USR1 <PID号>
  • #平滑升级
  • kill -USR2 <PID号>

2.7新版本升级:

  • tar -zxvf nginx-1.22.0.tar.gz  1.22.0  
  • cd nginx-1.22.0
  • yum -y  install pcre-devel zlib zlib-devel openssl openssl-devel  ##装依赖包
  • ./configure \
  • --prefix=/usr/local/nginx \        
  • --user=nginx \                    
  • --group=nginx \                    
  • --with-http_stub_status_module \
  • --with-http_ssl_module
  • make   ##编译
  • mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old   备份
  • cp objs/nginx /usr/local/nginx/sbin/nginx
  • 重启服务 并且
  • nginx -V   #查看版本
  • 扩展:
  • make upgrade               ##升级的第二种方法
  • #或者先 killall nginx ,再/usr/local/nginx/sbin/nginx

2.8 添加 Nginx 系统服务

方法一: service 系统管理

  • vim /etc/init.d/nginx
  • #!/bin/bash
  • #chkconfig: 35 99 20    // 这是固定格式,2345表示运行级别,之后为开机执行顺序和关机执行顺序
  • #description:Nginx Service Control Script    //这也是必须的 
  • COM="/usr/local/nginx/sbin/nginx" 
  • PID="/usr/local/nginx/logs/nginx.pid"
  • case "$1" in
  • start)
  •   $COM
  • ;;
  • stop)
  •   kill -s QUIT $(cat $PID)
  • ;;
  • restart)
  •   $0 stop
  •   $0 start
  • ;;
  • reload)
  •   kill -s HUP $(cat $PID)
  • ;;
  • *)
  • echo "Usage: $0 {start|stop|restart|reload}"
  • exit 1
  • esac
  • exit 0
  • chmod +x /etc/init.d/nginx
  • chkconfig --add nginx    #添加为系统服务
  • systemctl stop nginx   
  • systemctl start nginx

 

service   nginx   start|stop|restart|reload
 

3.0 nginx平滑升级

前言

在工作当中时常会遇到一些软件升级的需求,这次主要是记录使用nginx进行平滑升级(在不关闭nginx服务情况下)

需求将已安装的nginx-1.6.3升级为nginx-1.20.2

3.1、准备工作

下载需要更新的nginx版本,解压到opt目录下

#  tar -zxvf nginx-1.20.2.tar.gz -C /opt/

3.2、make编译

  • # 进入解压目录
  • cd ./nginx-1.20.2
  • # 进行配置(因为之前已经指定了用户、组、路径等信息,所以这次直接执行就ok)
  • ./configure
  • # 进行编译 
  • make
  • # 编译完成后可以看到一个objs文件夹,进入到objs文件夹,里面有个nginx二进制文件
  • cd ./objs

3.3、平滑升级

  • 备份安装目录下的nginx
  • cd /usr/local/nginx/sbin
  • mv nginx nginx.bak
  • 复制objs目录下的nginx到当前sbin目录下
  • cp /opt/software/nginx/nginx-1.20.2/objs/nginx /usr/local/nginx/sbin/
  • 查看进程pid号
  • ps -elf |grep "nginx"
  • 平滑升级19118进程
  • kill -USR2 19118
  • 快速关闭19118进程
  •  kill -QUIT 19118
  • 查看最新版本号
  • ./nginx -v

猜你喜欢

转载自blog.csdn.net/Sp_Tizzy/article/details/131288220
今日推荐