xml地图|网站地图|网站标签 [设为首页] [加入收藏]
Nginx简介及配置文件详解,操作系统导论
分类:操作系统

一、Nginx简介

图片 1 操作系统做什么?

从不同的视角进行分析:

国庆最后一天了,闲来无事装个双系统,用虚拟机的linux总有些不方便。

   Nginx是一款开源代码的高性能HTTP服务器和反向代理服务器,同时支持IMAP/POP3/SMTP代理服务

图片 2 用户视角

window下安装linux双系统有两中方法:

1.Nginx工作原理

图片 3 系统视角

1.U盘安装 (我采用的方法,后面详述)

       Nginx由内核和模块组成,完成工作是通过查找配置文件将客户端请求映射到一个location block(location是用于URL匹配的命令),location配置的命令会启动不同模块完成工作。

图片 4最终定义操作系统

定义1:操作系统是为了实现管理,同时带来了必不可少的各种类型的浪费

图片 5 分析:管理硬件资源,同样带来的浪费有:内存消耗,硬件消耗等。

定义2:操作系统是管理计算机硬件的程序,它还为应用程序提供基础,并且充当计算机硬件和计算机用户的中介

图片 6 分析:计算机硬件包括CPU(逻辑计算中心)、I/O设备(显示器,鼠标,键盘,打印机等)、物理存储设备。

硬件:如中央处理单元(Centeal Processing Unit,CPU)、内存(memory)、输入输出设备(Input/Output devices, I/Odevices),为系统提供基本的计算资源。

应用程序:电子制表软件、编译器、浏览器、音乐播放器等国定了用户按何种方式使用这些资源。

图片 7 操作系统提供了正确使用这些资源的方法。操作系统类似于政府,操作系统本身并不实现任何有用的功能。它只不过是提供了一个方便其他程序做有用工作的环境。

图片 8 用户视角:对于这种情况,操作系统的设计目的是为了用户使用方便,性能是其次的,而且不在乎资源使用率。性能和资源使用率相比,性能对用户来说更为重要,这种系统主要为了优化单用户的情况。

图片 9 系统视角:将操作系统看做资源分配器。计算机系统可能有许多资源,用来解决CPU时间、内存空间、文件存储空间、I/O设备等问题。操作系统管理这些资源。面对许多甚至冲突的资源请求,操作系统必须决定如何为各个程序和用户分配资源,以便计算机系统能有效而公平地运行。强调控制各种I/O设备和用户程序的需求。操作系统管理用户程序的执行以防止计算机资源的错误使用或者使用不当。

2.EasyBCD工具安装 (使用EasyBCD完美实现Windows7与Linux双系统)

       Nginx模块分为核心模块,基础模块和第三方模块。

图片 10 计算机系统组织结构?

 

           核心模块:HTTP模块、EVENT模块(事件)、MAIL模块。

图片 11 计算机系统如何操作

使用U盘win10安装centos7双系统,网上的文章有很多,不一一列举,然而这并不能让我少走弯路,不知是历史遗留原因,还是系统自身原因,原本很简单的东西,愣是让网友们说的很复杂。

           基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块、HTTP Rewrite模块。

图片 12 计算机系统的存储结构

这里面有个最大的风险点:linux覆盖了window系统。控制好这个风险,就算一次没成功,也可以再来一遍。

           第三方模块:HTTP Upstream Request Hash模块、Notice模块、HTTP Access Key模块。

图片 13 I/O结构

计算机系统操作:现代通用计算机系统由一个或多个CPU和若干设备控制器通过共同的总线相连而成,该总线提供了对共享内存的访问。每个设备控制器负责一种特定的设备(比如磁盘驱动器,音频设备,视频显示器)。CPU与设备控制器可以并发工作,并竞争内存周期。为确保对共享内存的有序访问,需要内存控制器来协调对内存的访问。

图片 14

计算机启动时,首先需要运行一个初始化程序。该初始化程序(引导程序 bootstrap program)比较简单,位于ROM或者EFPROM中,也叫做计算机硬件中的固件。它的主要职责:初始化系统的所有部分,包括CPU寄存器、设备控制器和内存内容,必须知道如何装入操作系统并开始执行系统。需要定位操作系统内核并将其装入内存。之后操作系统开始执行第一个进程如init,并等待事件的发生。

事件的发生通常通过硬件或者软件的中断来表示。硬件可以随时通过系统总线向CPU发出信号,以触发中断。软件通过执行特殊操作比如系统调用(System call)也能触发中断。

图片 15 中断是计算机结构的重要部分。每个计算机设计都有自己的中断机制,但是有些功能是共同的。中断必须将控制转移到合适的中断处理程序。处理转移的简单方法是调用一个通用子程序以检查中断信息。接着,子程序会调用相应的中断处理程序。不过处理中断要快,可以通过处理中断子程序的指针表实现。

图片 16 中断体系结构也保存被中断指令的地址。许多旧的设计简单地在固定位置中保存中断地址。更为现代的结构将返回系统堆栈的地址,若果中断处理程序需要修改处理器状态,如修改寄存器的值,它必须明确地保存当前状态并在返回前恢复该状态。在处理中断之后,保存的地址会装入程序计数器,被中断的计算可以重新开始,就好像中断没有发生一样。

图片 17

图片 18 存储结构:计算机程序必须在内存(随机访问内存 random access memory,RAM)中以便运行。内存是处理器可以直接访问的唯一的大容量存储区域、通常是用被称为动态随机访问内存(dynamic random access memory,DRAM)的半导体技术来实现的,是一组内存字的数组,每个字都有其地址。通过对特定内存地址执行一系列load或store指令来实现交互。指令load能将内存中的字移动到CPU的寄存器中,而指令store能将寄存器内容移动到内存。除了显式使用load和store外,CPU可自动从内存装入指令来执行。

一个典型的指令执行周期(在冯·诺依曼体系结构上执行时)首先从内存中获取指令,并保存到指令寄存器(instruction register)中,接着,指令被解码,并可能导致内存中获取操作数或将操作数保存到内部寄存器中。在指令完成对操作数的执行后,其结果可以回到内存。注意内存单元只看见内存地址流,它并不知道它们如何产生的(通过指令计数器、索引、间接、常量地址等),或它们是什么地址(指令或数据)。相应地,可忽视程序如何产生内存地址,只对程序运行所生成的地址序列感兴趣。

图片 19 ①内存太小,不能永久地存储所有需要的程序和数据。

图片 20 ②内存是易失性存储设备,当掉电时会失去所有内容。

计算机系统提供辅存(secondary storage)以作为内存的扩充。对辅存的主要要求是它必须要能够永久地存储大量的数据。

图片 21

图片 22 常用的辅存为磁盘(magnetic disk),它能存储应用程序和数据,绝大多数程序保存在磁盘上,直到要执行时才装入到内存。适当的管理磁盘存储对计算机系统来说十分重要。

上面只是一种存储系统:由寄存器、内存和磁盘组成。除此之外,还有高速缓存,CD-ROM,磁带等。

图片 23

I/O结构:在计算机中,存储器只是众多I/O设备的一种,操作系统的大部分代码用来进行I/O管理,这既是因为它对系统可靠性和性能的十分重要,也因为设备变化的特性。

通常,操作系统为每个设备控制器提供一个设备驱动程序。这些设备驱动程序理解设备驱动器,并提供一个设备与其余操作系统的统一接口。

为了开始I/O操作,设备驱动程序在设备控制器中装在适当的寄存器。

图片 24

说说几个大步骤:

2.性能优势

图片 25计算机系统体系结构

1. window下压缩空间,参考win7下安装Linux实现双系统全攻略

       web服务器,处理静态文件、索引文件以及自动索引效率高。

图片 26单处理器系统

2. 用UltraISO在U盘上制作centos7系统启动盘(注意你的centos7要是官网上下载对应的版本,否则安装时会有问题)

       代理服务器,快速高效反向代理,提升网站性能。

图片 27多处理器系统

3. 插上制作好的U盘,重新启动,使用F2或DEL键进入BIOS,选择U盘启动。(不知道别人的BIOS是什么样,我这里U盘生成有两个,一个是flash...,一个是Generic...,我选择的是Generic...)

       负载均衡器,内部支持Rails和PHP,也可支持HTTP代理服务器,对外进行服务。同时支持简单容错和利用算法进行负载均衡。

图片 28集群系统

单处理系统采用单处理器。在单处理器系统中,有一个主CPU能够执行一个通用指令集,包括来自用户进程的指令。

多处理器系统主要的三个优点:

图片 29增加吞吐量:通过增加处理器的数量,希望能在更短的时间内做更多的事情。

图片 30规模经济:多处理器系统比单处理系统能节省资金,这是因为它们能共享外设,大容量存储和电源供给。

图片 31增加可靠性:如果将功能分步在多个处理器上,那么单个处理器失灵将使得整个系统停止,只会导致速度降低而言。

集群系统:由两个或者多个独立的系统耦合起来的。集群的定义目前尚未定形。较为常用的定义是集群计算机共享并通过局域网连接或更快的内部连接。

集群通常用来提供高可用性服务。这意味着即使集群中的一个或者多个系统出错,服务仍然继续。

集群可以是对称的,也可以是非对称的。非对称集群(asymmetric clustering)中,一台机器出于热备份模式(hot standby mode),而另一台运行应用程序。热备份主机只监视活动服务器。如果该服务器失效,那么备份服务器会成为现行服务器。对于对称集群,两个或多个主机都运行应用程序,它们互相监视。

集群系统的详细介绍:

http://blog.csdn.net/wangxx2011/article/details/7425219

  1. 进入安装页面,

  2. install centos

  3. check and install centos

  4. more...

       性能方面,Nginx专门为性能设计,实现注重效率。采用Poll模型,可以支持更多的并发连接,并在大并发时占用很低内存。

很多网文都说要做修改(window10+CentOS双系统安装),

       稳定性方面,采用分阶段资源分配技术,使CPU资源占用率低。

我完全没有修改,也能成功安装。

       高可用性方面,支持热备,启动迅速。

  1. 略过。。。容易的

  2. 进入分盘选项,一定要手动分

二、配置文件详解

1,点击你在第一步压缩出来的盘,

Nginx配置文件(/usr/local/nginx/conf/nginx.conf)

2.选择(我要配置分区)

配置文件主要包括全局配置,I/O事件配置和HTTP配置这三大块内容,配置语句的格式“关键字      值;”(末尾以分号表示结束),以“#”开始的部分表示注释。

网上找的图,莫喷

1)全局配置

图片 32

#Nginx的worker进程运行用户以及用户组

 

#user  nobody nobody;

  1. 接着进入手动分区,点击 (点这里自动创建他们),真的是自动创建他们,你会发现在新系统下面已经有三个创建好好的,分别是/, /boot, /swap,不要修改这三项,你如果要改,先要自己懂分区

#Nginx开启的进程数

图片 33

worker_processes  1;

8. 我推荐你最小安装,用时间最小,否则哪里出错,可以再来一遍。最后点完成。

#worker_processes auto;

  1. 安装完成,会推荐你重启,完全断电后拔U盘

  2. 用 easyBCD 制作引导 ,依然参考win7下安装Linux实现双系统全攻略

  3. 重启就可以看到了

#以下参数指定了哪个cpu分配给哪个进程,一般来说不用特殊指定。如果一定要设的话,用0和1指定分配方式.

 

#这样设就是给1-4个进程分配单独的核来运行,出现第5个进程是就是随机分配了。eg:

#worker_processes 4     #4核CPU

#worker_cpu_affinity 0001 0010 0100 1000

       

#定义全局错误日志定义类型,[debug|info|notice|warn|crit]

#error_log  logs/error.log  info;

#指定进程ID存储文件位置

#pid        logs/nginx.pid;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。

#vim /etc/security/limits.conf

#  *                soft    nproc          65535

#  *                hard    nproc          65535

#  *                soft    nofile         65535

#  *                hard    nofile         65535

worker_rlimit_nofile 65535;

2)事件配置

1. events {

#use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。

use epoll;

#每个进程可以处理的最大连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。理论值:worker_rlimit_nofile/worker_processes

#注意:最大客户数也由系统的可用socket连接数限制(~ 64K),所以设置不切实际的高没什么好处

worker_connections  65535;   

#worker工作方式:串行(一定程度降低负载,但服务器吞吐量大时,关闭使用并行方式)

#multi_accept on;

  }

3)http参数

#文件扩展名与文件类型映射表

include mime.types;

#默认文件类型

default_type application/octet-stream;

 

#日志相关定义

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

#                  '$status $body_bytes_sent "$http_referer" '

#                  '"$http_user_agent" "$http_x_forwarded_for"';

#定义日志的格式。后面定义要输出的内容。

#1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;

#2.$remote_user :用来记录客户端用户名称;

#3.$time_local :用来记录访问时间与时区;

#4.$request  :用来记录请求的url与http协议;

#5.$status :用来记录请求状态;

#6.$body_bytes_sent :记录发送给客户端文件主体内容大小;

#7.$http_referer :用来记录从那个页面链接访问过来的;

#8.$http_user_agent :记录客户端浏览器的相关信息

#连接日志的路径,指定的日志格式放在最后。

#access_log  logs/access.log  main;

#只记录更为严重的错误日志,减少IO压力

 error_log logs/error.log crit;

#关闭日志

#access_log  off;

#默认编码

#charset utf-8;

#服务器名字的hash表大小

 server_names_hash_bucket_size 128;

#客户端请求单个文件的最大字节数

 client_max_body_size 8m;

#指定来自客户端请求头的hearerbuffer大小

 client_header_buffer_size 32k;

#指定客户端请求中较大的消息头的缓存最大数量和大小。

large_client_header_buffers 464k;

#开启高效传输模式。

sendfile        on;

#防止网络阻塞

tcp_nopush on;

tcp_nodelay on;    

#客户端连接超时时间,单位是秒

keepalive_timeout 60;

#客户端请求头读取超时时间

client_header_timeout 10;

#设置客户端请求主体读取超时时间

client_body_timeout 10;

#响应客户端超时时间

send_timeout 10;

#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 464k;

本文由澳门新葡亰手机版发布于操作系统,转载请注明出处:Nginx简介及配置文件详解,操作系统导论

上一篇:VirtualBox虚拟机开机后台自启动,简单粗暴的更换 下一篇:Docker的介绍和安装,win10关机指示灯亮解决办法
猜你喜欢
热门排行
精彩图文