2種部署方式簡介
- 第一種
前置1臺nginx服務(wù)器做HTTP反向代理和負(fù)載均衡
后面N太服務(wù)器的Nginx做Web服務(wù)翎碑,并調(diào)用php-fpm提供的fast cgi服務(wù)
此種部署方式最為常見祥山,web服務(wù)和PHP服務(wù)在同一臺服務(wù)器上都有部署 -
第二種
前置1臺nginx服務(wù)器做Web服務(wù)
后面服務(wù)器只部署php-fpm服務(wù)姐仅,供nginx服務(wù)器調(diào)用
前置1臺nginx服務(wù)器裳扯,在調(diào)用后面多例php-fpm服務(wù)時,也可以做到負(fù)載均衡
如下圖 :
對比
-
從系統(tǒng)設(shè)計角度
第一種部署是常規(guī)部署方式,大中小規(guī)模網(wǎng)站都能適用。
-
第二種冀续,不同服務(wù)部署在不同服務(wù)器上,更加細(xì)致必峰。但也有幾個問題:
- 前置nginx充當(dāng)Web服務(wù)洪唐。對靜態(tài)資源的訪問、壓縮傳輸自点、緩存設(shè)置等桐罕,也都集中在這臺服務(wù)器上脉让。壓力會大桂敛,容易成為瓶頸。
- 如果靜態(tài)資源都存放于CDN溅潜,不需要HTTP 壓縮傳輸术唬,這種部署方式還算比較合理;
承接上面兩點(diǎn)滚澜,還可以對這種部署方式進(jìn)行優(yōu)化粗仓。如前置nginx負(fù)載均衡和反向代理,中間是nginx Web服務(wù)设捐,后面部署php-fpm服務(wù)借浊。
-
從性能角度
相比第二種部署方式,第一種多走了一次進(jìn)程間交互萝招。- 按照第一種部署蚂斤,當(dāng)一個http請求過來,先是nginx反向代理轉(zhuǎn)發(fā)至nginx Web服務(wù)(通過網(wǎng)絡(luò))槐沼,Web服務(wù)再通過fastcgi協(xié)議與php-fpm進(jìn)行交互(進(jìn)程間交互)曙蒸;
- 按照第二種部署捌治,當(dāng)一個http請求過來,充當(dāng)Web服務(wù)的nginx纽窟,直接通過網(wǎng)絡(luò)與php-fpm進(jìn)行交互
-
第一種部署肖油,通過網(wǎng)絡(luò)交互的是HTTP協(xié)議,第二種通過網(wǎng)絡(luò)交互的是fast-cgi協(xié)議臂港, 這兩種協(xié)議對比如何呢森枪?
- fast cgi 的數(shù)據(jù)包會比HTTP稍微大一些,fast cgi協(xié)議會比HTTP攜帶更多的參數(shù)信息趋艘、傳輸控制信息等等疲恢。
- fast cgi 協(xié)議比HTTP協(xié)議格式化嚴(yán)格一些,解析起來速度更快一些瓷胧。
-
從運(yùn)維角度
第一種是最常見的部署方式显拳,簡單統(tǒng)一,所有提供web服務(wù)的服務(wù)器上的服務(wù)都是同構(gòu)的搓萧,單調(diào)粗放杂数。
第二種則是將nginx和php-fpm單獨(dú)分開部署,不同服務(wù)在服務(wù)器集群上的分布更加細(xì)致瘸洛。如果統(tǒng)計Web服務(wù)中的壓力分布揍移,可以更加精細(xì)地利用硬件資源。運(yùn)維成本也更高反肋。
從開發(fā)測試角度
兩種部署方式都不合適開發(fā)環(huán)境或測試環(huán)境那伐。
開發(fā)和測試環(huán)境把nginx和PHP部署到一臺服務(wù)器上即可,不需要反向代理和負(fù)載均衡石蔗。-
總結(jié)
如果是LAMP環(huán)境的部署罕邀,第一種比較常見。
如果不是LAMP养距,是nginx和其他fastcgi服務(wù)交互诉探,比如C/C++、java的fastcgi程序棍厌,在大規(guī)模的網(wǎng)絡(luò)應(yīng)用中肾胯,類似第二種的部署是常見的。做到不同服務(wù)之間分開部署耘纱,反而是簡化了系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)敬肚,更加便于維護(hù)。