一,Nginx 简介:
1,Nginx是一款优秀的Web服务软件,他的优点是方便,简单,灵活,是一款极具发展潜力的Web服务器。
2,nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件
3,nginx具有三大功能(服务)
(1)可以充当Web服务器。(作为Web服务软件)
(2)还可以充当负载均衡 。(反向代理或负载均衡服务) Web服务器前边就是负载均衡
(3)还可以当缓存服务器。(前端业务数据缓存服务)就做一个Web缓存图片视屏静态缓存
4,特点:是支持高并发,对静态的处理非常好。 内存存储占用小。
(1),Nginx很好用很小,但是越这样的越难开发,它是通过一种叫异步I/O事件模型来实现的。叫做epoll
Nginx是通过epoll模型来实现的外部服务。
(2),Nginx总体性能要高于Apache,因为Nginx承接单个用户需要的系统资源少,所以从并发来说,Nginx要比Apache有更大的并发量。(如果只作为Web服务器来说中小企业用的Nginx更多一些,大企业局部是Nginx)
(3), Apache 用的是select模型, 这是同步IO网络模型 (用户太多了受不了,为什么大企业还用呢? 使用负载均衡,就是添加Apache数量。)、
Apache 处理的连接数最多不超过1024个。(而且要从新编译)
Nginx 用的是epoll模型 ,这是异步网络I/O模型(随着用户的增加,性能上基本没有变化,性能很好。)
Nginx 处理的连接数是无限制
显然开发epoll模型比较难, select开发比较简答
5,同步I/O,异步I/O
(1),进程产生的线程,线程是干活的。
(2),国内的游戏之所以垃圾,其都是单线程,只能干一件事,并且速度有I/O阻塞。
(3),单线程和多线程都叫同步阻塞I/O模型,必须一件事一件事干,同步就是这一件事没干完前,就得等它。这就是select模型
(4)异步I/O模型也叫非阻塞模型。就是Nginx的epoll模型。
Nginx可以启很多线程,每个线程能干无数个事
(5)异步就是在单线程内开启多个服务,一个未完成不用等,开启另一个,同一时间可以干多件事。这就是异步I/O模型的原理。
二,编译Nginx
1,(1)从桌面把Nginx(nginx-1.10.2.tar.gz)包放在root下
(2)先安装支持包。 用yum安装(别忘挂盘)
(3)#yum -y install pcre-devel openssl-devel
这两个支持包必须有pcre-devel和openssl-devel
(4)# tar xf nginx-1.10.2.tar.gz -C /usr/src
解压这个文件包(nginx-1.10.2.tar.gz)指定放在/usr/src 下
之后过去
#cd /usr/src/nginx-1.10.2/
(5)先创建一个程序用户#useradd –s /sbin/nologin –M www
用户名是www创建在了/sbin/nologin目录下,不能shell登录此用户。
(6)先安装编译支持软件
#yum –y install gcc gcc-c++ make automake
然后开始编译#
#./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
(7)然后编译安装
#make && make install
(8)#cd /usr/local/nginx/ 进入ls里边有四个目录
Conf(配置文件) html(网页目录) logs(日志)
Sbin(系统管理员使用的管理程序)
(/usr/local下一般是你安装软件的目录)
(9)#cd conf/ 先进入conf目录. #ls看一下。
nginx.conf这就是配置文件。
nginx.conf.default和它的备份。
这个文件里边装的都是媒体类型。
(10)现在开始配置nginx.conf文件
首先看下nginx.conf文件内多少行
#cat nginx.conf | wc –l
之后去掉内容的#号和 空格 从它的默认备份文件写回到配置文件
# egrep -v "#|^$" nginx.conf.default > nginx.conf
(11)#vim nginx.conf
这行可以先暂时去掉这是报错页面。
就这18行就可以搭载Web服务了。
(12)接下来一行一行的认识下。
1 worker_processes
1; → Nginx工作的进程个数 这是1个
2 events { → 2到4行事件函数 第3行进程里的线程个数
3 worker_connections 1024;
4 }
5 http { → 5行以下都是http函数内容(整个函数里边就是Web服
务Web服务就在这个模块)
6 include mime.types; →(include导入的意思,把
mime.types所有内容引导到当前行当前的配置文件)
7 default_type application/octet-stream;
8 sendfile on; →(文件的高效传输默认就是开的sendfile发送文件)
9 keepalive_timeout 65; →(连接保持功能持续65秒,
Keepalive保持 timeout超时)
10 server { →(10到17行又是一个函数,是http的子函数,一个server代表一个虚拟网站。一个网站搭一个server,两个就再搭建一个server)
11 listen 80; →(socket进程的监听端口)
12 server_name localhost; →(域名 网站名 主页名)
13 location / {
14 root html; →(网站的网页从哪开始从一个叫html目录下边开始算我的网站的根,root根的意思,从html开始算我的网页目录,网页的根目录路径)
15 index index.html index.htm; →(index索引的意思就是首页,这行指的是指定网站的首页是哪个网页名。)
16 }
17 }
18 }
(13)什么叫做连接保持如TCP三次握手,过程中断了这进程结束,但连续保持就是TCP连接保持还在建立着我等你再发请求,就不用频繁建立三次握手了,这样节约系统资源,要不然服务器老得跟我进行三次握手对服务器是个损耗。所以这个功能在服务器遭遇大并发时打开,这样就可以降低三次握手带来的成本消耗。阿帕奇因为他的接待能力太低了有可能就要关。 Nginx 第9行这不用关。