【Nginx那点事儿】之 ①【 Nginx入门】

一、Nginx为什么受青睐

​ 在介绍Nginx具体的安装、配置以及原理之前先聊聊概念常识问题。那就是目前为什么Nginx深受青睐?那我们先从Nginx是什么开始聊起。

1.Nginx是什么

  • 简单介绍

    Nginx来自于俄罗斯,是在RamblerMedia工作的Igor Sysoev使用C语言编写而成的跨平台轻量级高性能的Web服务器。Nginx可以运行在LinuxFreeBSDSolaris(Sun公司的类Unix OS)、MacOS、以及Windows等操作系统。操作系统的不同,也给Nginx带来了一些好处,Nginx会使用当前操作系统中特有的一些高效API来提高自身的性能。

  • Nginx和它的对手们

    Nginx的对手们有ApacheLighttpdTomcatJettyIIS,它们同为Web服务器:具备Web服务器的基本功能;基于Rest架构风格,以统一资源描述符(URI)统一资源定位符(URL)作为沟通依据,通过HTTP为浏览器等Client程序提供各种网络服务。

    但是,这些Web服务器呢,都多多少少因为各自的定位与发展方向都不尽相同,使得每一款Web服务器都各有特色:

    ​ 1.Tomcat、Jetty:都是面向Java语言设计的。但是它们在性能方面与Nginx没有什么可比性,因为这两款服务器都是重量级选手。可能有伙伴会很疑惑,我已经用Tomcat跑起服务,同样配置后可以直接访问为什么还要在加层外套Nginx,对于这个问题,在后边对这一点进行详细的分析。【】

    ​ 2.IIS:这位选手呢,来自于微软家族。然后特点大家可能就很清楚了,它只能在Windows OS运行(不过网上也有工具可以把它运行在LinuxOS中,但是并不是很完美哦)。可能拉低它颜值的就是稳定性性能了,Windows OS作为服务器的话,稳定性和部分性能都不能和类Unix OS进行媲美,所以呢,在高性能Web服务器的场合中,IIS可能就要被“淘汰”了。

    ​ 3.Apache:这是一位压轴级选手,是发展周期最长的,毫无疑问是世界第一大Web服务器,在2012年遥遥领先其他选手。它毕竟有很多优秀的地方:稳定开源跨平台等。但是美中不足的是,它被设计成为了重量级不支持高并发Web服务器。如果有数以万计的HTTP请求同时访问,服务器就会面临大量内存消耗的问题,操作系统也会跟着收到牵连,毕竟Apache的进程做进程间切换时会给服务器的CPU带来重大压力,同时会伴随着响应效率降低,这致命的一击,导致这位来自“贵族世家”的选手在高性能Web服务器的舞台上没有了地位。

    ​ 4.Lighttpd:Nginx同样是轻量级、高性能的Web服务器。但是它并没有得到国内开发者的钟爱,而是被欧美的开发者们所追捧。

  • 恩宠--Nginx

    Nginx的代码也是开源的而且是最自由的2-clause BSD-like license许可证。Nginx使用的架构是基于事件驱动的,能够并发处理百万级别的TCP连接。由于Nginx的高度模块化和具有最自由的许可证,让Nginx的第三方模块扩展功能更加充实。优秀的设计还带来了极佳的稳定性体验。所以,Nginx大量应用于大流量的网站来高效处理大规模高并发连接。种种迹象表明,Nginx在性能方面很出色。

2.Nginx的特点

  • 更快

    快主要体现在两方面:①在正常的情况下,单次请求会得到更快的响应;②在数以万计的并发请求中,Nginx可以比其他Web服务器更快的响应请求。

  • 高扩展性

    Nginx的高度模块化决定了其具有高扩展性。它完全是由多个不同功能、不同层次、不同类型以及耦合度极低的模块组合而成。它的模块都是嵌入到二进制文件中执行,使得第三方开发的模块也一样完美支持性能。所以高并发的网站完全可以根据自身项目业务特性定制属于自己的模块。

  • 高可靠性

    这个特点应该是选择Web服务器最基本的条件。Nginx的稳定性,大家有目共睹。国内多家高流量并发的网站在核心的服务器上大规模使用Nginx。官方提供的常用模块是非常稳定的,每一个Worker进程都相对独立,把耦合性降至最低。master进程在其中一个Worker进程出错时可以快速“拉起”新的Worker子进程提供相应的服务。

  • 低内存消耗

    据数据测试,一般情况下,1W个不活跃的HTTP Keep-Alive连接在Nginx中消耗只有2.5MB的内存。(这也是Nginx能够支持高并发连接的基础)

  • 单机支持10W+的并发连接

    由于现在是海量数据时代,高并发无疑成为大家青睐的对象。理论上,Nginx支持的并发连接数量取决于内存,10W+的并发连接并没有到极限。但是,能否及时处理更多的并发连接应该取决于项目业务的需求。

  • 热部署

    master管理进程和Worker进程是相互隔离的,这使得Nginx能够彰显热部署的能力。通俗点来说,就是完全可以在724h不停止服务正常工作的情况下,可以升级Nginx*的可执行文件、更新配置选项、更新日志文件等功能操作。

  • 最自由的BSD许可协议

    俗话说“众人拾柴火焰高”。也正是BSD许可协议带来的极大优势,为Nginx提供更强劲的发展动力。

综上所述,选择Nginx的核心理由还是由于它能在支持高并发请求的同时保持高效的服务。

二、Nginx的安装

1.源码安装

在正式安装Nginx前需要保证服务器主机已经安装有编译环境GCC开发库之类的环境。

  • GCC编译环境工具安装

Ubuntu OS编译环境使用如下命令:

apt-get install build-essential
apt-get install libtool

②CentOS编译环境使用如下命令:

yum install -y gcc automake autoconf libtool make
yum install -y gcc-c++

安装完成编译环境,就可以着手准备Nginx所需要的类库PCRE库zlib库OpenSSL开发库

  • PCRE库安装

首先介绍一下PCRE库的作用,为NginxHTTP模块提供解析正则表达式的基础。这里直接通过下载源码的方式进行编译安装。根据需要的版本在PCRE源码中选择URL然后用下边命令进行下载

wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
## 现在完成后,对源码包进行解压
tar -xzvf pcre-8.42.tar.gz
## 解压完成进入pcre-8.42目录
cd pcre-8.42
## 执行配置
./configure
## 进行编译并安装
make 
make install
  • Zlib库安装

Zlib库主要是针对HTTP包的内容做gzip格式的压缩。例如,Nginx的配置nginx.conf文件中配置gzip onZlib-1.2.11下载

## 使用Wget命令下载源码
wget http://zlib.net/zlib-1.2.11.tar.gz
## 进行解压
tar -xzvf zlib-1.2.11.tar.gz
## 进入zlib目录进行配置编译安装操作
cd zlib-1.2.11
./configure
make 
make install
  • Openssl安装

如果对版本没有特殊要求,OpenSSL我们采用命令安装

## CentOS 安装命令
yum install openssl openssl-devel
​
## Ubuntu/Debian 安装命令
sudo apt-get install openssl        
sudo apt-get install libssl-devel  
  • Nginx安装

首先去Nginx官网下载合适版本的源码。同时我们可以直接在服务器使用wget命令进行下载。

wget http://nginx.org/download/nginx-1.14.0.tar.gz
## 解压Nginx源码
tar -xzvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
​
## 进行配置项的配置:(以下只是选择了编译Nginx源码时的部分配置选项)
 # --sbin-path: 指定了可执行文件的放置路径,默认路径在<prefix>/sbin/nginx
 # --conf-path: 指定了配置选项文件的放置路径,默认路径在<prefix>/conf/nginx.conf
 # --pid-path: 指定了pid文件的放置路径,默认路径在<prefix>/logs>nginx.pid
 # --with-http_ssl_module:安装http_ssl_module,使得Nginx支持SSL协议,保证HTTPS服务。
 # --with-pcre: 指定PCRE库源码的路径,编译Nginx时会进入此路径对源码进行编译。
 # --with-zlib: 指定Zlib库源码的路径,编译Nginx时会进入此路径对源码进行编译。
./configure  \
--sbin-path=/usr/local/nginx/nginx \ 
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/opt/app/openet/oetal1/cheney/pcre-8.42 \
--with-zlib=/opt/app/openet/oetal1/cheney/zlib-1.2.11 
​
## 配置完成后进行编译安装
make 
make install

安装完成之后可以进行简单的测试,进入配置的${--sbin-path}路径下启动Nginx。

## 直接使用默认配置执行nginx可执行文件启动服务
/usr/local/nginx/sbin/nginx

在保证服务器主机端口可以访问的情况下,使用浏览器访问主机IP地址,例如http://127.0.0.1,可以看到Nginx服务的默认主页。这就说明Nginx服务正常启动了。然后可以根据项目具体的业务需求,对Nginx进行特殊配置进行详细定制。


Nginx的具体配置问题,下篇文章进行详细介绍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348