lamp組合一種是基于linux平台的web應用部署:
L: Linux, A: apache (httpd), M: MySQL (MariaDB), P (php, python, perl, ruby)
工作流程:
web程序接受用戶端請求,用戶端請求的資源有動态的也有靜态,靜态資源請求web程序直接從磁盤讀取,動态資源請求需要伺服器提供一個PHP語言的環境進行運作,運作過程可能需要讀取資料(由資料庫提供資料提高效率),将動态資源運作的結果給web程序,由web程序響應給使用者。 為了提高響應速度,可将web程序,php環境,資料庫分别部署在不同的伺服器上。(這就是fcgi模式)
早期有用戶端自行處理動态資源,獲得運作結果(如浏覽器的插件,flash等)
關于動态資源請求的工作圖
![]()
LAMP
CGI協定:Common Gateway Interface,通用網關接口
簡化版的http協定,用于web伺服器與應用程式程序通信;(在lamp體系中httpd程序調動php語言等其他的程序)httpd需要CGI子產品才能成為cgi協定的用戶端和其他應用程式程序交流
httpd程序還将URL轉換成本地檔案路徑發給程式設計語言環境程序,由該程序自己調用檔案
PHP語言有一套自己完整的解釋器,無需依賴linux作業系統的特别指令
Database:
PHP應用程式直接讀取磁盤上的資料(檔案形式存儲的資料),影響應用程序本身運作,将功能下放交給資料庫讀取磁盤上的資料,資料庫程序讀取并組織成結構完後再傳遞給PHP應用程式提高應用程式計算運作的效率。
資料庫為PHP等應用程式提供資料庫接口(API),在應用程式的代碼中調用此接口。
a與p的結合方式有三種:
Module:将應用程式作為第三方子產品,加載在httpd的程序中
cgi:web伺服器根據用戶端的動态請求開啟一個子程序,該子程序就是PHP負責運算,運算完成後由httpd程序銷毀
fcgi:應用程式自己起一個程序,監聽着與httpd程序的請求(基于套接字可以跨主機),工作模式類似httpd的prework。此種方法可以完全把應用程式獨立成伺服器。
請求流程:
Client --> (http) --> httpd --> (somefile.php, cgi) --> application server --> (mysql) --> mysql server
php程式與MySQL如何互動:
解釋器無須與MySQL對接, 需要處理資料其實是解釋器上運作的程式;
存儲系統有多種:
NoSQL: redis, mongodb等等
SQL: MariaDB, MySQL, Oracle等
NewSQL:
分布式存儲:
程式與存儲系統互動需要通過專用的接口(驅動)進行
CentOS 6.6 AMP(apache,mysql,php)
需要安裝基本程式包:
httpd, php, php-mysql, mysql-server
rpm包安裝的PHP為子產品可能被httpd程序所加載,PHP可以嵌入html代碼中 web伺服器隻會将PHP封裝的那部分代碼送出給PHP解釋器
PHP代碼連接配接mysql的擴充(稱之為API接口或驅動),在centos中被做成一個RPM包(php-mysql),安裝完成需要重新加載!