一:nginx 环境搭建

官方文档

http://nginx.org/en/docs/http/ngx_http_core_module.html#var_args

四项确认

  • 确认系统网络可通行
  • 确认yum可用
  • 确认关闭iptables规则
  • 确认停用selinux

查看iptables规则

iptables -L

关闭iptables规则

iptables -F

获得当前selinux状态

getenforce

关闭selinux

setenforce 0

关闭防火墙

# 关闭防火墙
systemctl stop firewalld.service
# 设置开机不起动
systemctl disable firewalld.service

  

两项依赖安装  

yum install -y gcc gcc-c++ autoconf pcre pcre-devel make automake
yum install -y wget httpd-tools vim

一次初始化,初始化目录是以后我们放对应的文件代码

  • app:代码目录
  • download:下载的源码包等
  • logs:自定义日志
  • work:一些shell脚本
  • backup:默认配置文件的备份
cd /opt
mkdir app download logs work backup

  

安装过程

第一步:添加Nginx到YUM源

添加CentOS 7 Nginx yum资源库,打开终端,使用以下命令

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

第二步:安装
在CentOS 7 服务器中使用yum命令从Nginx源服务器中获取来安装Nginx  

yum install -y nginx

第三步:启动Nginx

刚安装的Nginx不会自行启动。运行Nginx

systemctl start nginx.service
# 设置开机自启
systemctl enable nginx.service

如果一切进展顺利的话,现在你可以通过你的域名或IP来访问你的Web页面来预览一下Nginx的默认页面

Nginx的特性-实现优点

 原因一:IO多路复用epoll

什么是IO复用?

多个描述符的 I/O 操作都能在一个线程内并发交替地顺序完成,这就叫I/O多路复用,这里的"复用"指的是复用同一个线程。

 原因二:轻量级

功能模块少:

源代码里只有核心代码,其他代码以插件形式安装

代码模块化:

适合二次改进

原因三:CPU亲和(affinity)

nginx正是利用到了cpu的亲和来提高并发处理能力以及减少不必要的cpu损耗。

1.什么是CPU亲和

是一种把CPU核心和Nginx工作进程绑定方式,把每个worker进程固定在一个cpu上执行,减少cpu的cache miss,获得更好的性能。

2.为什么需要CPU亲和

nginx作为接入层的中间件,nginx通过多个work进程进行处理。
假设我们主机是两个CPU,每个有四个核心,我们把CPU的八个进程分别绑定到不同的CPU上(也就是不同的work分配到不同的核心上)。如果有多个CPU利用自带的CPU切换,会造成性能损失。利用这种CPU的亲
和绑定,就能减少切换的损耗。
 

原因四:sendfile

ginx采用sendfile机制处理静态文件,因此效率很高。

上图是传统的http服务,当我们访问一个文件时,会先经过内核空间,再经过用户空间,传给socket,最后通过response返回给用户。该过程需要多次与用户空间进行切换,但是静态文件其实不需要与用户空间进行过多的逻辑处理。直接可以通过内核空间传输。

sendfile机制只通过内核空间,将文件传给socket,最终响应给用户。

因此nginx在处理CDN和动静分离服务时有很大优势。

最新文章

  1. BACKLOG
  2. 用xib自定义UITableViewCell
  3. css文字两端对齐
  4. JDK 工具列表
  5. OC对象中的getter方法中不能用self.
  6. php 伪静态 (url rewrite mod_rewrite 重写)
  7. [Javascript] Using JSHint for Linting with Gulp
  8. sql management studio 附加mdf文件出错的解决办法
  9. Visual Studio 2017正式版发布全纪录
  10. rsync源目录写法的一点小细节
  11. 腾讯2017年暑期实习生编程题【算法基础-字符移位】(C++,Python)
  12. PHP+nginx 启动后访问超时
  13. Flask与mysql数据库字段类型的区别以及基本用法
  14. jQuery实现回车绑定Tab事件
  15. wekpack笔记
  16. php插入中文数据到MySQL乱码
  17. BZOJ 2865 字符串识别 | 后缀数组 线段树
  18. Win10年度更新开发必备:VS2015 Update 1正式版下载汇总
  19. Scala学习笔记(一):环境搭建
  20. 逐步实现python版wc命令

热门文章

  1. 0.9.0.RELEASE版本的spring cloud alibaba sentinel+feign降级处理实例
  2. 全面系统Python3入门+进阶-1-1 导学
  3. iOS利用AFNetworking(AFN) 实现图片上传
  4. 如何修改WAMPServer默认的网站路径地址
  5. Data - 数据思维 - 下篇
  6. dotnet core use RabbitMQ
  7. python基础学习(十四)
  8. Visual Studio 设置为 UTF-8 保存格式
  9. 题解 Luogu P1110 【[ZJOI2007]报表统计】
  10. BJFU——205基于顺序存储结构的图书信息表的排序