lnmp架構——架構理解
- 1 lnmp簡介
- 2 lnmp作業原理
- 3 lnmp特點
- 4 lamp與lnmp的區別
- 4.1 lamp簡介
- 4.2 對比
1 lnmp簡介
- LNMP是指一組通常一起使用來運行動態網站或者服務器的自由軟體名稱首字母縮寫,其中L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python,
- 一般情況下LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構,其中PHP是一種在服務器端執行的嵌入HTML檔案的腳本語言,
- 這四種軟體均為免費開源軟體,組合到一起,成為一個免費、高效、擴展性強的網站服務系統,
2 lnmp作業原理
- 客戶端通過http協議發起請求,該請求最先會到達lnmp架構中的nginx
- nginx會根據用戶的請求進行判斷,該判斷是由nginx中的location模塊完成的,若nginx判斷請求是靜態頁面,則由nginx直接處理并回傳客戶端;如果請求是動態頁面,nginx會將該請求交給fastcgi協議進行下發
- fastcgi會將請求交給php-fpm管理行程,該行程接收到后會呼叫具體的作業行程wrapper
- wrapper執行緒會呼叫php進行決議,如果是單純的決議php代碼,那么結果會直接回傳給客戶端;如果有資料庫操作,那么php會連接到資料庫,然后發起操作
- 最后資料原路回傳,由mysql–>php–>php-fpm–>fastcgi–>nginx–>http–>client
注意:PHP-FPM(FastCGI Process Manager)是一個FastCGI管理器
fast-cgi是php的一個模塊
3 lnmp特點
- 優點
- 占用VPS(虛擬專用服務器)資源較少,Nginx配置起來也比較簡單,利用fast-cgi的方式動態決議PHP腳本,
- 作為 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的并發連接,體現更高的效率,
- Nginx性能穩定、功能豐富、運維簡單、處理靜態檔案速度快且消耗系統資源極少,
- 作為負載均衡服務器:Nginx 既可以在內部直接支持Rails和PHP,也可以支持作為 HTTP代理服務器對外進行服務,
- Nginx 安裝非常的簡單,組態檔非常簡潔,Nginx支持平滑加載新的配置,還能夠在不間斷服務的情況下進行軟體版本的升級,
- 缺點
- php-fpm組件的負載能力有限,在訪問量巨大的時候,php-fpm行程容易僵死,容易發生502 錯誤
4 lamp與lnmp的區別
4.1 lamp簡介
- lamp是指Linux+Apache+MySQL+PhP架構
- lamp架構的作業流程是由瀏覽器發送http請求,Apache服務器接受請求,而PHP是Apache的一個模塊,具有相同的生命周期,兩者通過共享記憶體的方式通信,因此php作為Apache的組件模塊也會一起啟動,Apache會將一些靜態資源保存,然后呼叫php模塊進行php的腳本的處理,php處理完后,Apache會將處理完的資料通過http response的方式發送回客戶端瀏覽器決議
4.2 對比
- 在LNMP中,Nginx本身對腳本不做任何的處理,只是進行轉發,把請求發給fast-cgi管理行程處理fast-cgi管理行程選擇cgi子行程處理結果并回傳,二者是相互獨立的
- 在LAMP中,PHP是Apache的一個模塊,具有相同的生命周期,兩者通過共享記憶體的方式通信,php作為Apache的組件模塊會一起啟動
- LAMP方式會多占用資源較多,且配置虛擬主機要同時修改Nginx和Apache的組態檔,操作較為復雜
- LNM使用資源更少,支持更多并發連接,效率更高,作為負載均衡服務器,nginx即可對內進行支持,也可對外進行服務,安裝簡單,配置簡潔
- Apache本身處理PHP的能力比php-fpm強,適合訪問量較大的站點使用
- 注意Apache編譯的PHP不能用戶nginx
提問:nginx為什么比apache快,也就是為什么nginx高并發的功能更加強大?
- 主要是因為他們所采用的I/O復用方式不同,Nginx使用了epoll的I/O模型,而Apache使用的是傳統的select模型
- select方式僅僅知道有I/O事件發生了,卻不知道是哪幾個流(可能有一個,多個,甚至全部),所以只能無差別輪詢所有流,找出能讀出資料,或者寫入資料的流,然后進行操作
- 而epoll會主動通知哪個流發生了怎樣的I/O事件,所以說epoll實際上是事件驅動的,此時我們對這些流的操作就比較快捷
- 目前Linux下能夠承受高并發訪問的Squid、Memcached快取都采用的是epoll網路I/O模型,該模型可以處理大量的連接的讀寫,Apache所采用的select網路I/O模型較為低效
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/277496.html
標籤:其他
