01. 《Nignx实战 —— 简介、安装、操作》
文章目录
Nginx 简介、安装 及 操作
1. Nginx简介
Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡。
1.1 Nginx实现原理
Nginx采用的时多路复用IO,所谓多路复用IO,即是:多个描述的I/O操作都能在一个线程内完成并发交替地顺序完成,这就是I/O多路复用(这里的复用指的是复用同一个线程)。
1.2 Nginx优点
1.2.1 I/O多路复用
I/O多路复用实现的方式:select,poll,epoll三种方式:
- 什么是select
-
select缺点:
- 能够监视文件描述符的数量存在最大限制1024个
- 线性扫描效率低下
-
epoll模型(Nginx采用)
- 每当FD就绪,采用系统的回调函数之间将fd放入,效率登高。
- 最大连接无限制
1.2.2 轻量级
-
功能模块少
Nginx只保留有用的模块,其余模块均已插件的形式存在。
-
代码模块化
1.2.3 CPU亲和
CPU亲和:是一种CPU核心和Nginx工作进程绑定的方式,把每个worker进程固定在一个CPU上执行,减少切换CPU的cache miss,获得更好的额性能。
1.2.4 sendFile
- 传统的文件拷贝方式
- Linux2.0以后出现的0拷贝模式
文件的传输只通过内核空间传递给socket,呈现个用户。
2. Nginx 安装
2.1 准备环境
- 安装c、c++编译环境,如已安装可略过
[[email protected] src]# yum install gcc gcc-c++
// 期间会有确认提示输入y回车
Is this ok [y/N]:y
- openssl安装
[[email protected] src]# yum install -y pcre pcre-devel
- pcre安装
[[email protected] src]# yum install -y zlib zlib-devel
- zlib安装
[[email protected] src]# yum install -y openssl openssl-devel
2.2 nginx安装
- 下载 Nginx
[[email protected] src]# wget http://nginx.org/download/nginx-1.14.1.tar.gz
- 解压
[[email protected] src]# tar zxvf nginx-1.14.1.tar.gz
[[email protected] src]# cd nginx-1.14.1
- 检测环境并编译安装
[[email protected] nginx-1.14.1]# ./configure && make && make install
2.3 安装完成
- 安装位置
[[email protected] nginx]#pwd
/usr/local/nginx
- 安装后文件目录
[[email protected] nginx]#ls
conf html logs sbin
[[email protected] nginx]#tree
.
├── conf
│ ├── fastcgi.conf
│ ├── fastcgi.conf.default
│ ├── fastcgi_params
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types
│ ├── mime.types.default
│ ├── nginx.conf
│ ├── nginx.conf.default
│ ├── scgi_params
│ ├── scgi_params.default
│ ├── uwsgi_params
│ ├── uwsgi_params.default
│ └── win-utf
├── html
│ ├── 50x.html
│ └── index.html
├── logs
└── sbin
└── nginx
4 directories, 18 files
// 目录说明
conf 存放配置文件
html 网页文件
logs 存放日志
sbin shell启动、停止等脚本
3. Nginx 操作
3.1 Nginx 启动
// 指令:nginx程序 -c nginx配置文件
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
如果使用
-c
指定配置文件,默认使用/usr/local/nginx/conf/nginx.conf
3.2 nginx重启
# cd /usr/local/nginx/sbin
// 重启
[[email protected] sbin]# ./nginx -s reload
如果使用此指令时,Nginx未处于启动运行状态,将会抛出以下异常:
[[email protected] sbin]#./nginx -s reload
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
3.3 nginx停止
// 方式一
[[email protected] sbin]# ./nginx -s stop
// 方式二
[[email protected] sbin]# ./nginx -s quit
说明:
- quit:是一个优雅的关闭方式,Nginx在退出前完成已经接受的连接请求
- stop:是快速关闭,不管有没有正在处理的请求。
3.4 重新打开日志
[[email protected] sbin]# ./nginx -s reopen
3.5 nginx检查配置文件
- 检查默认配置文件是否正确
[[email protected] sbin]# ./nginx -t
- 检查指定配置文件是否正确
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
-c
后指定具体配置文件位置。
4. nginx的信号控制
4.1 进程类型
Nginx支持2种进程模型Single和Master-Worker
- Single是单进程,一般不适用,
- Master-Worker是主进程和工作进程模型运行,主进程对工作进程管理。
Nginx允许我们通过信号来控制主进程,用信号的方式可以达到不影响现有连接的目的。
4.2 信号类型
-
INT,TERM
:快速关闭信号 -
QUIT
:从容关闭信号 -
HUP
:从容重启信号,一般用于修改配置文件后,重启 -
USR1
:重读日志,一般用于日志的切割 -
USR2
:平滑升级信号 -
WINCH
:从容关闭旧进程
4.3 使用信号量控制进程
- 语法:
kill -信号选项 nginx的主进程号
// 例:
# kill -INT 26661
# kill -HUP 4873
- Nginx 停止
# ps -ef | grep nginx 获得进程号
// 第1种从容“优雅”停止
# kill -QUIT master进程号
// 说明:
// # Nginx服务可以正常地处理完当前所有请求再停止服务
// # 步骤:首先会关闭监听端口,停止接收新的连接,然后把当前正在处理的连接全部处理完,最后再退出进程。
// 第2种快速停止
# kill -TERM master进程号
# kill -INT master进程号
// 说明:
// # 快速停止服务时,worker进程与master进程在收到信号后会立刻跳出循环,退出进程。
// 第3种强制停止
# pkill -9 nginx
// 说明:系统强杀nginx进程
- Nginx 重启
kill -HUP master进程号
已经介绍了,QUIT,INT,TERM,HUP的信号
下几节课程会详细介绍USR1,USR2,WINCH信号。
.
.
.
.
.
.