架构详解
- nginx的web优势解析
- Yum? Install 安装方法
- 做一个自己的小网站
Nginx(engine x)
简介:是一个高性能的HTTP(解决C10k的问题)和反向代理服务器,也是一个IMAP/POP3/SMTP服务器(邮局服务器) C10K => connection 10000(万机高并发)
面试: nginx是一款性能强大的Web服务器,使用IO多路复用中的epoll模型,解决高并发的代理器及负载均衡设备,成为当前企业主流的Web服务器。
一、Nginx的web 优势(动静分离)
动:能与用户进行交互,用户查询数据时与后方数据库进行调用
静:.html/.jpg/.avi/.css/.txt ......所见即所得
- IO多路复用: < IO => input(输入)/output(输出)
- 时分多路复用 ==> CPU时钟/中断设计 (一手画圆,一手画方)
- 频分多路复用 高并发——IO多路复用——epoll——异步——非阻塞
-----------epoll IO多路复用---------------
传统方法:最传统的多进程并发模型,每进来一个新的I/O流会分配一个新的进程管理
Apache < 传统的apache在处理用户的请求时,会分出n的子进程(复制),每个进程处理一个用户的请求
? ? ? ? 当其中有一个子进程发生故障,会导致其他的子进程错误!
Nginx < 当用户的请求到达nginx服务器时,服务器会有时延(时间延时)
? ? ? ? 用户1访问请求到达时,nginx会处理第一个用户的请求
? ? ? ? 这时nginx不会暂停服务,而是会在去接收用户2的请求,丢给后方服务处理后
? ? ? ? 再去对用户3的请求进行接收.......
? ? ? ? 当用户1的请求完成后,返还数据给用户1,再去接收用户4的请求.......
IO:单个线程通过记录跟踪每个I/O流(sock)的状态,来同时管理多个I/O流
作用:是尽量多的提高服务的吞吐能力,在同一个线程里面,通过拨开关的方式,来同时传输多个I/O流
epoll(IO多路复用中的一种模型):线程安全,不仅告诉你sock组里面的数据,还会告诉你具体哪个sock有数据,你不用自己去找。
-
异步: 用户过来的请求不是同时在处理,而是多路复用处理多个请求 -
非阻塞: nginx处理用户的请求时,不会因为后方Web服务器的问题而暂停服务,而是会处理其他用户的请求
二、Installed(Yum 配置)
-
1. 在百度上搜索 "www.nginx.org"
2. 打开页面中找到 "documentation"单击打开
3. 单击"installing" ,找到 "package"打开
4. 找到 REHEL/CentOs,打开,按照步骤安装
?
------------版本--------------
?
1. Mainline version: 主线版,即开发版
2. Stable version: 最新稳定版,生产环境上建议使用的版本 #选择这版本即可
3. Legacy versions: 遗留的老版本的稳定版
---------------安装nginx显示秘钥问题----------------------
wget https://nginx.org/keys/nginx_signing.key --no-check-certificate rpm --import nginx_signing.key
Nginx 配置文件 环境: rpm -ql nginx //列出nginx支持的所有模块/文件
-
1. /etc/logrotate.d/nginx ? ? #日志轮转
2. /etc/nginx/nginx.conf ? #总配置文件
3. /etc/nginx/conf.d/ ? #子配置文件
4. /etc/nginx/conf.d/default.conf #默认的网站配置目录
5. /etc/nginx/mime.types ? #文件关联程序(网站类型和相关处理的程序)
6. /etc/nginx/modules #模块文件夹/第三方模块
7. /usr/lib/systemd/system/nginx.service systemctl #服务脚本
8. /usr/sbin/nginx ? #主程序
9. /var/cache/nginx #缓存
Nginx编译的参数
--with-file-aio ? #支持异步非阻塞
--with-threads ? ? #多线程模块
--with-http_addition_module #响应式追加模块/替换模块
--with-http_auth_request_module #认证模块
--with-http_gunzip_module #压缩模块
--with-http_realip_module #代理功能,Nginx获取真实IP模块
--with-stream ? #负载均衡/反向代理
Nginx的主配置:vim /etc/nginx/nginx.conf
-------------核心模块-------------
< worker_processes 1; ? ? ?#启动的worker进程数量(通常与本机的CPU数量一致或auto)
?
-------------事件驱动模块-------------
< use epoll; ? ? #事件驱动模型epoll【默认】
< worker_connections 10240; ?#每个worker进程允许处理的最大连接数,例如10240,65535
?
-------------Http模块--------------
模块的参数优化.......
Nginx的子配置:vim /etc/nginx/conf.d/default.conf
-
1. listen 80 => 监听端口(可以作修改)
?
2. charset koi8-r; => 默认字符集(UTF8)
?
3. location /{
? root /usr/share/nginx/html; => 网页内容存放目录
? index index.html index.htm; ?=> 网页的主页
? }
三、做一个属于自己的小网站
-
1. vim /etc/nginx/conf.d/pt.conf
? server {
? ? ? ?listen 80;
? ? ? ?server_name ? ? pengge.com;
? ? ? ?location / {
? ? ? ? ? ? ? ?root ? ?/peng;
? ? ? ? ? ? ? ?index ? index.html;
? ? ? ?}
? }
?
2. 创建存放文件的目录:mkdir /peng
?
3. echo "penggeDaShuaiGe" ?>> /peng/index.html
?
4. 域名解析: vim /etc/hosts
192.168.178.131(本机的IP地址) pengge.com
?
5. 访问pengtong.com:yum -y install elinks ? #纯字符浏览器
elinks ?http://192.168.178.131
|