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