LAMP架构简述_IT架构
閱讀目錄
- 圖片架構詳解
- LAMP架構以及通信過程
- LNMP架構優(yōu)缺點
- Nginx/APACHE + tomcat + MySQL
圖片架構詳解
LAMP/LNMP:是有Linux系統(tǒng),Apache網(wǎng)絡服務器或者Nginx服務器,MySQL數(shù)據(jù)庫。php。LAMP/LNMP具有通用,跨平臺,高性能的又是。
LNMT/LAMt :整合 Apache Http Server 和 Tomcat 可以提升對靜態(tài)文件的處理性能、利用 Web 服務器來做負載均衡以及容錯、無縫的升級應用程序。
優(yōu)點:
1.提升對靜態(tài)文件的處理性能
2.利用 Web 服務器來做負載均衡以及容錯
3.無縫的升級應用程序
LAMP架構以及通信過程
LAMP的架構:
LAMP是一個多C/S架構的平臺,最初級為web客戶端基于TCP/IP通過http協(xié)議發(fā)起傳送,這個請求可能是動態(tài)的,也可能是靜態(tài)的。所以web服務器通過發(fā)起請求的后綴來判斷,如果是靜態(tài)的資源就由web服務器自行處理,然后將資源發(fā)給客戶端。如果是動態(tài)這時web服務器會通過CGI(Common Gateway interface)協(xié)議發(fā)起給php。這里但是如果php是以模塊形式與Web服務器聯(lián)系。那么他們是通過內(nèi)部共享內(nèi)存的方式。如果是php單獨的放置與一臺服務器,那么他們是通過sockets套接字監(jiān)聽的方式通信(這又是一個C/S架構)。這時php會相應的執(zhí)行一段程序,如果在執(zhí)行程序時,需要用到數(shù)據(jù)。那么php就會通過mysql協(xié)議發(fā)送給mysql服務器(也可以看作是一個C/S架構)。由mysql服務器處理,將數(shù)據(jù)供給php程序。
LAMP流程:
1. 用戶發(fā)送http請求到達httpd服務器
2. httpd解析url獲取需要的資源的路徑,通過內(nèi)核空間讀取硬盤資源,如是靜態(tài)資源,則構建響應報文,發(fā)回給用戶
3. 如果是動態(tài)資源,將資源地址發(fā)給php解析器,解析php程序文件,解析完畢將內(nèi)容發(fā)回給httpd,httpd構建響應報文,發(fā)回給用戶
4. 如果涉及到數(shù)據(jù)庫操作,則利用php-mysql驅動,獲取數(shù)據(jù)庫數(shù)據(jù),返回給PHP解析器。
Apache,MySQL,PHP 之間的聯(lián)動工作:
1、apache + php結合的方式大概幾種:
第一種:把php編譯時直接編譯成apache的模塊、module模塊化的方式進行工作(apahce默認的這種方式)。
第二種:CGI、通用網(wǎng)關接口、apache基于CGI跟hph通信
第三種:fastcgi、他也是一種協(xié)議、在這種模塊下他們兩個是這樣結合的:
本來php是做為一個模塊或都是php解析器運行的,不是監(jiān)聽在某個套接字上接收別人的請求的,而是讓別人調(diào)用為一個進程使用的,可能是做為別人的子進程在運行,但是工作在fastcgi這種模塊下的hph自行啟用為一個服務進程,
他監(jiān)聽在某個套接字上,隨時可以接受來自客戶端的請求的,他也是有一個主進程的,為了可以響應多個用戶的請求,他會啟用多個子進程,這些子進程我們也可以稱為工作進程,
他也是有空閑進程的,一但有客戶請求他馬上使用空閑的進程響應客戶端的請求,將結果返回給前端的調(diào)用者,在php5.3.3版本之前他是沒有這個能力了,只能工作在模塊和CGI的方式下,而在5.3.3之后這個模塊直接被收進php模塊中,這種模塊就叫php-fpm。
所以在以后編譯php時,要想跟apache結合,就要編譯成php-fpm,這是基于fastcgi工作的模式,并啟動這服務進程,也就意味著他是通過套接字跟前端的調(diào)用者通信,既然基于套按字通信了,那么前端的web服務器和后面的php服務器完全可以工作在不同的主機上,實現(xiàn)了所謂的分層機制。
apache不會跟數(shù)據(jù)庫打交道,他是個靜態(tài)web服務器,跟數(shù)據(jù)庫打交道的是應用程序,作為應用程序的源驅動能夠基于某個API跟服務器之間建立會話,而后他會通過我們的mysql語句發(fā)送給數(shù)據(jù)庫,數(shù)據(jù)庫再將結果返回給應用程序,不是php進程,而是php進程中所執(zhí)行的代碼。
2、php + mysql的通信:
PHP跟mysql怎么整合起來呢,php又怎么被httpd所調(diào)用呢
首先httpd并不具備解析代碼的能力,他要依賴于php的解析器,接著php本身不依賴于mysql,他只是一個解析器,能執(zhí)行代碼就OK了,那他什么時候用到mysql呢,如果要在mysql中存數(shù)據(jù)時才用到mysql,只是當php中有運行mysql語句時才用到mysql。
php語言要想聯(lián)系mysql,通常用到php的驅動,rpm包的叫php_mysql,php跟mysql沒有一點關系,只有程序員在php中編寫mysql語句時才連接mysql來執(zhí)行sql語句的。
基于php-mysql去連接mysql只使用一個函數(shù)mysql_connect();而mysql_connect()正是php-mysql提供的一個API,只要指明要連接的服務器即可。
LNMP架構優(yōu)缺點
LNMP的大致原理跟LAMP相差不多,但是 ,據(jù)說,LNMP不支持CGI模式。
LNMP是Linux+Nginx+Mysql+PHP的組合方式,其特點是利用Nginx的快速與輕量級,替代以前的LAMP(Linux+Apache+Mysql+PHP)的方式。由于安裝方便,并且安裝腳本也隨時更新。
LNMP方式的優(yōu)點:占用VPS資源較少,Nginx配置起來也比較簡單,利用fast-cgi的方式動態(tài)解析PHP腳本。
LNMP方式的缺點:php-fpm組件的負載能力有限,在訪問量巨大的時候,php-fpm進程容易僵死,容易發(fā)生502 bad gateway錯誤
綜上所述:
基于 LAMP 架構設計具有成本低廉、部署靈活、快速開發(fā)、安全穩(wěn)定等特點,是 Web 網(wǎng)絡應用和環(huán)境的優(yōu)秀組合。若是服務器配置比較低的個人網(wǎng)站,當然首選 LNMP 架構。
當然,在大流量的時候。把Apache和Nginx結合起來使用,也不失為一個不錯選擇,如下:
LNAMP是Linux+Nginx+Apache+Mysql+PHP的組合方式,其特點是利用Nginx來作為靜態(tài)腳本的解析,而利用 Nginx的轉發(fā)特性,將動態(tài)腳本的解析轉交給Apache來處理,這樣,能充分利用兩種Web服務器的特點,對于訪問量需求較大的站點來說,是一個很不錯的選擇。
LNAMP方式的優(yōu)點:由于Apache本身處理PHP的能力比起php-fpm要強,所以不容易出現(xiàn)類似502 bad gateway的錯誤。適合訪問量較大的站點使用。
LNAMP方式的缺點:相比LNMP方式會多占用一些資源,另外,配置虛擬主機需要同時修改Nginx和Apache的配置文件,要稍微麻煩一些。
Nginx/APACHE + tomcat + MySQL
Apacje/Nginx 和tomcat 整合在一起最常用的方法就是JK:
JK怎么連接tomcat?
JK 是通過 AJP 協(xié)議與 Tomcat 服務器進行通訊的,Tomcat 默認的 AJP Connector 的端口是 8009。
Apacje/Nginx 和tomcat 最常用的方式用于:負載均衡以及方向代理。
負載均衡與反向代理通俗的解釋:
A為客戶端,B為nginx or apache,C,D為應用服務器
負載均衡: 假設A沒有錢,那么A向B借錢,B本身是沒有錢的,B會向C,D借錢,然后在轉借給A,此時A是不知道C,D的存在的。
反向代理:假設A沒有錢,B也沒有錢,B就說,那么我推薦兩個人給你,你自己去向他們借錢吧,然后,B推薦了C,D,A此時認識到了C和D,然后,C,D說,可以借給A,但是要通過B做擔保,所以,C,D通過B的擔保借錢給了A。
轉載地址:https://www.cnblogs.com/keep-going2099/articles/7048508.html
總結
以上是生活随笔為你收集整理的LAMP架构简述_IT架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 买苹果手机送无线耳机吗
- 下一篇: 云米是什么牌子(为了无法计算的价值)