一、Nginx优点
IO 多路复用epoll
多个描述符的I/O操作都在一个线程内并发交替的顺序完成,这就叫I/O多路复用,这里的“复用”指的是复用同一个线程。轻量级
功能模块少,代码模块化-
CPU 亲和(affinity)
CPU 亲和:是一种把CPU核心和Nginx工作进程绑定的方式,把每个worker进程固定在一个cpu上执行,渐少切换cpu的cache miss,获得更好的性能
-
sendfile
当请求要给文件的时候,要经过操作系统的内核空间(Kernel space)和用户空间(User space),到达socket,再response给用户。而实际上静态文件通常不需要经过用户空间的处理,可以直接通过操作系统的内核空间进行传输,这就是sendfile。
二、环境要求
(1) 系统硬件 CPU>=2Core, 内存>= 256M
(2) 操作系统 CentOS >=7.0), 位数 x64,
(3) 环境调试确认(以下四点):
a. 确认系统网络
`ping www.baidu.com`看是否能ping通,能ping通则ok。
若ping不通,报出`name or service not known`,尝试以下解决方法:
- 首先添加dns服务器:
vi /etc/resolv.conf
, 在文件中添加如下两行:
nameserver 8.8.8.8
nameserver 8.8.4.4
保存退出,重启服务器。之后再ping 一次试试,如果没有解决 继续:
vi /etc/sysconfig/network-scprits/ifcfg-ens33
(这个文件名称 可能会不同,有的是ens 加上其他数字)
在文件中 找到ONBOOT=NO
改成ONBOOT=yes
,保存退出重启网络:
service network restart
,再ping一次试试
b. 确认yum可用,
yum list|grep gcc
c.确认关闭iptables规则
iptables -L
查看是否有iptables规则
iptables -F
关闭iptables规则
保险起见:iptables -t nat -L
查看nat表里是否有规则
iptables -t nat -F
关闭
d. 确认停用SELinux
getenforce
查看SELinux 是否开启。可能返回结果有三种:Enforcing、Permissive 和 Disabled。Disabled 代表 SELinux 被禁用,Permissive 代表仅记录安全警告但不阻止可疑行为,Enforcing 代表记录警告且阻止可疑行为。
这里执行 setenforce 0
将SELinux 状态置为Permissive ,临时关闭(不用重启机器)
(4)依赖安装
安装基础依赖
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
yum -y install wget httpd-tools vim
这里-y
参数表示不需要确认,一键式安装
三、Nginx快速安装
登陆Nginx官网,其中:
- Mainline version 开发版本
- Stable version稳定版本
- Legacy versions 历史版本
(1)找到stable version,找到下图红框中的内容(yum源的配置信息)并复制
(2)执行vim etc/yum.repos.d/nginx.repo
在机器的yum源里新建一个nginx.repo文件,并把刚刚复制的内容粘贴进去,将OS替换为centos, OSRELEASE 替换为7
即以下内容:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
(3) 执行yum list |grep nginx
, 把nginx相关的版本列出来, 如下图所示,nginx当前最新版本1.14.0
(4)执行
yum install nginx
安装nginx(5)
nginx -v
查看当前nginx 安装的版本, nginx -V
查看编译的参数
四、Nginx的安装目录
执行 rpm -ql nginx
查看所有的nginx配置目录(由于这里nginx使用yum方式安装,安装的是一个一个的rpm包,而rpm是包管理器,rpm -ql xxx
, 则可列出安装的服务的所有配置文件目录)。
五、Nginx编译参数
nginx -V
查看编译参数
nginx -V 2>&1 | sed "s/\s\+--/\n --/g"
查看格式化后的编译参数