1.ngnix是什么?
ngnix 是 开源的 代理http请求的 中间件。
2.为什么用ngnix
2.1ngnix是采用了多路复用Io的方式。
2.1.1
首先,IO多路复用技术指的是:
在同一个线程内,同时管理多个请求,根据每个请求的反馈,来记录各个请求的状态。
监视着多个io流的请求,根据他们的状态,来选择去处理哪一个状态
那接下来的问题,iO多路复用,是怎么实现一个线程内处理多个io请求的呢?
io多路复用 通过一种机制。来监视多个描述符,当文件描述符的状态发生改变的时候,即状态就绪的时候,就从而去通知程序进行处理。
内核帮助应用程序进行 管理fed的状态,状态维护发生在内核中,程序只要调用系统提供的api接口就可以了
随着时间的出现,一共有三种方式的实现,select poll epoll.
select
运行机制:
fed-set,是一个数组,数组元素是文件描述符。当select()被某个进程调用的时候,内核根据IO状态去修改相应的数组元素,由此来通知执行了select函数的进程哪个状态就绪了,可以进行处理了。 。
缺点:
每次调用select的时候,内核都得从用户状态copy一份fed-set集合,开销很大。 同时会把fed-set遍历一遍 ,开销较大
fed-set是存放的数量是有限制的。
poll机制 :
只是改变了大小限制这一问题。链表替换数组来解决支持fd上限1024问题。
Epoll :
解决了数量限制的问题;解决了复制和遍历消耗大的问题。
每当fd的状态就绪的时候,通过 系统的回调函数 直接将就绪的fd放到双向链表里面。
也不需要多次copy了。
2.2 Nginx的 轻量级
功能模块少 代码模块化(易读)
2.3 cpu亲和
将cpu的每个核心和Nginx工作进程进行绑定,即是 固定每个work与cpu核心上执行,减少切换cpu的高速缓存,提高性能。
2.4sendfile
直接通过0拷贝,从 内核中进行传输静态文件,当我们请求一个文件的时候,他会经过file-内核-系统-内核-socket-到达用户,nginx直接从file-内核-内核-socket-用户。
3. nginx的安装
3.1http://nginx.org/en/download.html进入到官网,选择最下方的linux
http://nginx.org/en/linux_packages.html。
本服务器系统是centos6 所以选择 yum 的安装方式;
3.2
新建目录 nginx 在该目录下,进入到该目录下
执行命令 sudo yum install yum-utils
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
复制进去 保存退出
3.3 安装
yum -install nginx 就可以了
nginx -v 查看是否成功。