Day44:
Nginx是目前最流行的靜態(tài)Web服務軟件
1.nginx介紹
Nginx (“engine x”) 是一個開源的憋肖、支持高性能歼疮、高并發(fā)的WWW服務和代理服務軟件。
它是由俄羅斯人IgorSysoev開發(fā)的,最初被應用在俄羅斯的大型網(wǎng)站www.rambler.ru上。
后來作者將源代碼以類BSD許可證的形式開源出來供全球使用鳞贷。
3 月 11 日,F(xiàn)5 與 NGINX 宣布了一項最終協(xié)議虐唠,根據(jù)該協(xié)議搀愧,F(xiàn)5 將收購 NGINX 的所有已發(fā)行股票,總價值約為 6.7 億美元疆偿。
F5 是應用交付網(wǎng)絡(ADN)領域的全球領先廠商咱筛,其解決方案有助于整合不同的技術,以便更好地控制基礎架構杆故,提高應用交付和數(shù)據(jù)管理能力迅箩,并使用戶能夠通過企業(yè)桌面系統(tǒng)和智能設備無縫、安全并更快速地接入應用处铛。
而 NGINX 最知名產(chǎn)品 Nginx 是互聯(lián)網(wǎng)上最受歡迎的 Web 服務器之一饲趋,NGINX 提供一整套用于開發(fā)和交付現(xiàn)代應用的技術,同時它也是應用交付領域的開源領導者撤蟆。
收購聲明指出奕塑,此次戰(zhàn)略收購和有機投資,將確保長期收入和每股盈利增長家肯;F5 和 NGINX 將在所有環(huán)境中實現(xiàn)多云應用服務龄砰,提供開發(fā)人員所需的易用性和靈活性,同時還提供網(wǎng)絡運營團隊所需的規(guī)模、安全性和可靠性等能力换棚。
收購完成后式镐,Nginx 管理層將加入 F5,現(xiàn)有的辦事處也將繼續(xù)保持開放固蚤。為了收購 Nginx碟案,F(xiàn)5 Networks 籌集了 1.03 億美元的資金,投資者中包括高盛颇蜡、澳洲電信風投、以及新企業(yè)協(xié)會辆亏。
鏈接:http://www.reibang.com/p/1f91b3d19608
2.Nginx3大主要功能
1)網(wǎng)頁服務:自身是靜態(tài)Web服務风秤,
apache,lighttpd,IIS
還支持動態(tài)Web服務
PHP(fastcgi_pass)
JAVA(proxy_pass)
Python(uwsgi_pass)
==================================
memcache(memcache_pass)
......
2)負載均衡\反向代理
haproxy,lvs,F5,netscaler
只支持http,現(xiàn)在tcp/udp扮叨。
3)緩存服務器
squid,varnish
3.特點:
2008冒頭缤弦,當時Apache老大,Nginx如何超越對手彻磁。
Apache 43%? ? Nginx 42%
最大特點:靜態(tài)小文件高并發(fā)碍沐,占用資源少。軟件本身小衷蜓。
企業(yè)面試時需要解答如下Nginx HTTP服務器的特色及優(yōu)點:
1)支持高并發(fā):能支持幾萬并發(fā)連接(特別是靜態(tài)小文件業(yè)務環(huán)境)累提。
2)資源消耗少:在3萬并發(fā)連接下,開啟10個Nginx線程消耗不到200MB內(nèi)存磁浇。
3)可以做HTTP反向代理及加速緩存斋陪,即負載均衡功能,內(nèi)置對RS節(jié)點服務
器健康檢查功能置吓,這相當于專業(yè)的haproxy軟件或lvs的功能无虚。
具備squid等專業(yè)緩存軟件等的緩存功能。
4.Nginx主要應用場景:
?1)靜態(tài)Web服務器:
? ? 使用Nginx運行HTML衍锚、JS友题、CSS、小圖片等靜態(tài)數(shù)據(jù)(此功能類似lighttpd軟件)戴质。
?2)配合運行動態(tài)Web服務器:
? ? Nginx結合FastCGI運行PHP等動態(tài)程序(例如使用fastcgi_pass方式)度宦。
? Nginx結合proxy_pass支持Java動態(tài)程序(tomcat/resin服務)。
? Nginx結合uwsgi_pass支持Python告匠。
? 3)反向代理/負載均衡
? ? http負載均衡
? 4)做Web緩存服務器(把文件放入內(nèi)存里)斗埂。
學習差異化:田忌賽馬
1)學運維就是差異化。
2)Web服務凫海,高并發(fā)(符合時代需求)呛凶。
3)京東超越淘寶(殺出一片天空)。
? 1.全網(wǎng)正品行贪。
? 2.當天即達漾稀。
? 3.價格全網(wǎng)最低模闲。
5.反向代理與負載均衡
代理:海外代購,微商:代理:代替別人做事崭捍。
正向代理:由內(nèi)向外尸折。 代替 效率低
代替局域網(wǎng)內(nèi)PC,請求外部應用服務殷蛇。
反向代理:由外向內(nèi) 代替 效率低
代替外部的用戶請求內(nèi)部的應用服務器实夹。
負載均衡:轉(zhuǎn)發(fā)、效率高
甩手掌柜粒梦。
6.為什么Nginx總體性能比Apache高亮航?
Nginx使用最新的epoll(Linux2.6內(nèi)核)和kqueue(freebsd)異步網(wǎng)絡I/O模型,而Apache則使用的是傳統(tǒng)的select模型匀们。目前Linux下能夠承受高并發(fā)訪問的Squid缴淋、Memcached軟件都采用的是epoll模型。
Apache則使用的是傳統(tǒng)的select模型,Nginx使用高并發(fā)的epoll模型
select模型:伙伴去宿舍找你泄朴,一個一個找重抖。。效率低祖灰。
epoll模型: 伙伴去宿舍找你钟沛,先問宿管大媽,看看在哪間宿舍局扶,然后直奔具體宿舍讹剔。效率高详民。
select模型:小孩撒尿:如果尿尿拉出來延欠,帶著尿尿。
epoll模型: 小孩撒尿:事先告訴所有小孩沈跨,如果要尿尿由捎,你就站出來。
? ? ? ? ? ? 阿姨就看有沒有人站出來就可以了饿凛。
7.軟件安裝
Linux系統(tǒng)如何安裝軟件狞玛?
1、rpm安裝
簡單 快涧窒。依賴多心肪,解決依賴困難繁瑣。
2纠吴、yum安裝 *****
簡單快硬鞍,自動解決依賴。不能選擇軟件版本或軟件存放路徑。
3固该、編譯安裝(源碼編譯)*****
慢 復雜 需要GCC編譯器锅减,可以自定義安裝(版本、軟件路徑)
4伐坏、將源碼制作成rpm,然后放到y(tǒng)um倉庫怔匣,實現(xiàn)yum自動安裝。
一次性慢 復雜桦沉,安裝快每瞒,可以自定義安裝(版本、軟件路徑)
5纯露、二進制安裝
制作RPM YUM倉庫搭建
https://blog.oldboyedu.com/autodeploy-rpm/
互聯(lián)網(wǎng) 就用nginx
linux系統(tǒng)安裝軟件方法:
1)yum install nginx -y(rpm包剿骨,自動解決所有依賴軟件)
簡單,沒法定制苔埋。
2)rpm -ivh rpm包(自己解決所有依賴軟件)
簡單,沒法定制蜒犯,沒法自動解決所有依賴軟件
3)編譯安裝(c語言)
可以定制组橄,編譯過程復雜,時間長罚随。
./configure 配置
make 編譯
make install 安裝
4)利用源碼制作符合企業(yè)需求的rpm軟件包玉工,放到y(tǒng)um倉庫里,最后yum安裝淘菩。
簡單遵班,可以隨意定制。
rpm包定制
http://blog.oldboyedu.com/autodeploy-rpm/
yum倉庫搭建
http://blog.oldboyedu.com/autodeploy-yum/
8.Nginx安裝
兩種安裝方法:
yum安裝:
epel源:版本低潮改。
nginx官方源:版本高狭郑。
編譯安裝:1、編譯講的多汇在。2翰萨、練習編譯過程
8.1 配置官方源yum安裝
[root@web ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
[root@web01 ~]# rpm -qa nginx
nginx-1.16.0-1.el7.ngx.x86_64
[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl enable nginx
[root@web01 ~]# systemctl status nginx
[root@web01 ~]# netstat -lntup|grep nginx
tcp? ? ? ? 0? ? ? 0 0.0.0.0:80? ? ? 0.0.0.0:*? LISTEN? 8509/nginx: master
8.2 編譯安裝(和8.1二選一)
pcre:URL重寫軟件,即實現(xiàn)偽靜態(tài)需要這個軟件
下載:
mkdir -p /server/tools
cd /server/tools
wget http://nginx.org/download/nginx-1.16.0.tar.gz
#安裝依賴糕殉。
yum install pcre pcre-devel -y
yum install openssl openssl-devel -y? #https加密用他亩鬼。
#編譯安裝步驟
tar xf nginx-1.16.0.tar.gz
cd nginx-1.16.0/
useradd -s /sbin/nologin www -M
id www
./configure? --user=www --group=www --prefix=/application/nginx-1.16.0/ --with-http_stub_status_module? --with-http_ssl_module --with-pcre
make
make install
ln -s /application/nginx-1.16.0/ /application/nginx
/application/nginx/sbin/nginx
netstat -lntup|grep nginx
注意:
1)每一步結尾直接echo $?驗證是否正確。返回0代表步驟正確
2)驗證最終的安裝是否正確阿蝶。
wget 10.0.0.8
curl 10.0.0.8
#configure參數(shù)的作用
--prefix=PATH? 路徑
--user=USER? ? 用戶
--group=GROUP? 組
--with-pcre? ? 偽靜態(tài)
--with-http_stub_status_module 狀態(tài)
--with-http_ssl_module? ? ? 加密 443
編譯安裝配置:
[root@web02 /application/nginx]# tree
.
├── conf
│?? ├── fastcgi.conf? ? ? ? #和動態(tài)服務的接口配置參數(shù)雳锋,配合php
│?? ├── fastcgi.conf.default
│?? ├── fastcgi_params
│?? ├── fastcgi_params.default
│?? ├── koi-utf
│?? ├── koi-win
│?? ├── mime.types? ? ? ? ? ? #媒體類型
│?? ├── mime.types.default
│?? ├── nginx.conf? ? ? ? ? ? #主配置文件
│?? ├── nginx.conf.default
│?? ├── scgi_params
│?? ├── scgi_params.default? #和動態(tài)服務的接口配置參數(shù)
│?? ├── uwsgi_params
│?? ├── uwsgi_params.default? #和動態(tài)服務的接口配置參數(shù),配合Python
│?? └── win-utf
├── fastcgi_temp
├── html? ? ? ? ? ? #默認站點目錄羡洁。?
│?? ├── 50x.html
│?? └── index.html? #默認的首頁玷过,10.0.0.8不指定文件,默認加載index.html首頁。
├── logs
│?? ├── access.log? #訪問日志
│?? ├── error.log? #Nginx錯誤日志冶匹。
│?? └── nginx.pid? #進程號對應文件习劫。
├── sbin
│?? └── nginx? ? ? #啟動命令。
yum安裝配置路徑:
[root@web01 ~]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx? ? ? ? ?
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/etc/nginx/win-utf
/usr/sbin/nginx
/usr/sbin/nginx-debug
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx
編譯為主:
[root@web02 /application/nginx/html]# vim index.html
<html>
<head>
<title>老男孩58期</title>
<meta charset="UTF-8">
</head>
<body bgcolor=green>
<br>
<div align=center>
<table border=1>
<tr>
? ? ? ? <td>ID</td>
? ? ? ? <td>NAME</td>
</tr>
<tr>
? ? ? ? <td>001</td>
? ? ? ? <td>項博</td>
</tr>
<tr>
? ? ? ? <td>002</td>
? ? ? ? <td>項伯</td>
</tr>
</table>
51期間作業(yè):4天
1嚼隘、畫圖:
把學過的rsync,sersync,nfs,ansible,ssh
數(shù)據(jù)流流程圖(部署圖)诽里。
2、原理畫圖
1飞蛹、文件刪除原理谤狡。
2、DNS解析原理
3卧檐、tcp/ip三次握手四次斷開原理(每一次的狀態(tài))墓懂。
4、Http通信原理霉囚。
5捕仔、用戶訪問網(wǎng)站流程。
3盈罐、ansible學過的一鍵完成(包括Nginx安裝)榜跌。
4、yum倉庫搭建盅粪、rpm包定制(可以不完成)
5钓葫、LNMP搭建出來,安裝好博客票顾。