一该面、環(huán)境調(diào)試確認(rèn)
安裝
??yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
??yum -y install wget httpd-tools vim
一次初始化
??mkdir app download logs work backup
關(guān)閉iptables規(guī)則
??iptables -L
??iptables -F
??iptables -t nat -L
??iptables -t nat -F
??關(guān)于iptables的介紹,大家可以看看http://www.zsythink.net/archives/1199/這篇文章信卡,講的非常好
關(guān)閉selinux
??getenforce如果顯示不是Disabled那么就要執(zhí)行setenforce 0
二隔缀、Nginx是什么
Nginx是一個(gè)開(kāi)源且高性能、可靠的HTTP中間件傍菇、代理服務(wù)
三猾瘸、常見(jiàn)的HTTP服務(wù)
四、為什么選擇Nginx
原因一:采用IO多路復(fù)用epoll模型
什么epoll模型丢习,我們先看看一張圖:
??圖中畫(huà)出了硬件的4個(gè)部分牵触,如果我們想和硬件打交道,則需要軟件咐低,我們的Nginx在接受到了外部請(qǐng)求之后會(huì)使用Linux內(nèi)核中的epoll模型與硬件打交道揽思,epoll是一個(gè)高效的處理IO復(fù)用的內(nèi)核模型。那么這里的關(guān)鍵就是處理IO復(fù)用见擦,那么什么是IO復(fù)用呢钉汗?看下一張圖:
??在早期的時(shí)候面對(duì)用戶的一個(gè)請(qǐng)求羹令,會(huì)產(chǎn)生一個(gè)socket流,然后要對(duì)用的socket流進(jìn)行處理损痰。我們假設(shè)這個(gè)時(shí)候我們只有一個(gè)線程去面對(duì)大并發(fā)的請(qǐng)求福侈,第一個(gè)請(qǐng)求的到來(lái)會(huì)占有這個(gè)線程,假設(shè)這個(gè)流的數(shù)據(jù)沒(méi)有完全達(dá)到服務(wù)器卢未,那么線程會(huì)一直等待(干等)肪凛,什么事情也不能干,而且也阻塞了其他的請(qǐng)求尝丐。那么這個(gè)時(shí)候我們可以相處兩個(gè)方案显拜,第一個(gè)方案就是使用多線程,同時(shí)處理多個(gè)請(qǐng)求爹袁,但是這樣做同樣也會(huì)消費(fèi)很多資源,無(wú)法滿足大量的并發(fā)失息,這個(gè)時(shí)候第二個(gè)方案出現(xiàn)了譬淳,它就是使用一個(gè)線程采用IO復(fù)用模式。
一個(gè)for循環(huán)不斷的去遍歷所有的流盹兢,如果有數(shù)據(jù)了就讀取邻梆,否則就去遍歷下一個(gè)流,假設(shè)所有的流沒(méi)有數(shù)據(jù)绎秒,只會(huì)白白浪費(fèi)CPU浦妄。
通過(guò)上圖我們可以看到IO復(fù)用內(nèi)核模式的種類(lèi)以及演變。接下來(lái)我們來(lái)講講這3中模型见芹。
select相比于之前的偽代碼就多了一步剂娄,只有在流中有數(shù)據(jù)的時(shí)候,才開(kāi)始讀取數(shù)據(jù)玄呛,這樣就不會(huì)讓CPU白白空跑阅懦。
原因二:CPU親和
??CPU親和是把CPU核心和Nginx工作進(jìn)程進(jìn)行綁定的一種方式,把每個(gè)worker綁定到一個(gè)cpu上執(zhí)行徘铝,減少切換cpu的cache miss,獲得更好的性能耳胎。
原因三:sendFile
??文件的傳輸不再通過(guò)內(nèi)核態(tài)到用戶態(tài),然后在由用戶態(tài)傳遞到內(nèi)核態(tài)在傳遞給socket惕它,取而代之的是怕午,直接走內(nèi)核態(tài)的buffer cache,減少一次拷貝淹魄。
五郁惜、Nginx的快速安裝
??官方網(wǎng)址:http://nginx.org/
步驟一:
??cat /proc/version或者lsb_release -a查看操作系統(tǒng)的版本
??詳細(xì)的安裝步驟在這個(gè)頁(yè)面:http://nginx.org/en/linux_packages.html
步驟二:
??vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
步驟三:
??yum install nginx
步驟四:查看安裝是否成功
??nginx -v查看nginx的版本
??nginx -V查看nginx的安裝編譯參數(shù)
六.Nginx的目錄和配置語(yǔ)法
安裝目錄詳解:
我們使用yum安裝nginx之后,其實(shí)裝的就是nginx的一堆rpm包揭北,通過(guò)rpm -ql nginx命令我們可以看看到底裝了一些什么東西扳炬,而且都放在什么目錄下。
路徑 | 類(lèi)型 | 作用 |
---|---|---|
/etc/logrotate.d/nginx | 配置文件 | Nginx日志輪轉(zhuǎn)搔体,用于logrotate服務(wù)的日志切割 |
/etc/nginx /etc/nginx/nginx.conf /etc/nginx/conf.d /etc/nginx/conf.d/default.conf | 目錄恨樟、配置文件 | Nginx主配置文件 |
/etc/nginx/fastcgi_params /etc/nginx/uwsgi_params /etc/nginx/scgi_params | 配置文件 | cgi配置相關(guān),fastcgi配置 |
/etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf | 配置文件 | 編碼轉(zhuǎn)換映射轉(zhuǎn)化文件 |
/etc/nginx/mime.types | 配置文件 | 設(shè)置http協(xié)議的content-type與擴(kuò)展名對(duì)應(yīng)關(guān)系 |
/usr/lib/systemd/system/nginx-debug.service /usr/lib/systemd/system/nginx.service /etc/sysconfig/nginx /etc/sysconfig-debug | 配置文件 | 用于配置出系統(tǒng)守護(hù)進(jìn)程管理器管理方式 |
/usr/lib64/nginx/modules /etc/nginx/modules | 目錄 | nginx模塊目錄 |
/usr/sbin/nginx /usr/sbin/nginx-debug | 命令 | nginx服務(wù)的啟動(dòng)管理的終端命令 |
/var/cache/nginx | 目錄 | nginx的緩存目錄 |
/var/log/nginx | 目錄 | nginx的日志目錄 |
nginx.conf是啟動(dòng)的時(shí)候要用到的配置文件疚俱,default.conf是ngxin沒(méi)有變動(dòng)的時(shí)候的默認(rèn)配置文件
安裝編譯參數(shù):
默認(rèn)配置語(yǔ)法
vi /etc/nginx/nginx.conf會(huì)看到以下信息:
默認(rèn)配置和默認(rèn)站點(diǎn)啟動(dòng)
??命令:systemctl restart nginx.service
??額外補(bǔ)充一下systemctl的相關(guān)知識(shí)劝术。Systemd 并不是一個(gè)命令,而是一組命令呆奕,涉及到系統(tǒng)管理的方方面面,systemctl是 Systemd 的主命令养晋,用于管理系統(tǒng)。
# 立即啟動(dòng)一個(gè)服務(wù)
$ sudo systemctl start nginx.service
# 立即停止一個(gè)服務(wù)
$ sudo systemctl stop nginx.service
# 重啟一個(gè)服務(wù)
$ sudo systemctl restart nginx.service
# 殺死一個(gè)服務(wù)的所有子進(jìn)程
$ sudo systemctl kill nginx.service
# 重新加載一個(gè)服務(wù)的配置文件
$ sudo systemctl reload nginx.service
??我們看到nginx.conf配置文件中的http中的include包含了default.conf梁钾,這里面配置了很多上圖的一些配置绳泉,其中的location /表示說(shuō),當(dāng)只輸入域名不輸入任何路徑的時(shí)候姆泻,默認(rèn)會(huì)到root配置的目錄中去找index配置中的那些文件零酪。error_page定義了異常應(yīng)答碼的時(shí)候,會(huì)主動(dòng)到location對(duì)應(yīng)的root中去找對(duì)應(yīng)的文件拇勃。