lamp組合一種是基於linux平臺的web應用部署:
L: Linux, A: apache (httpd), M: MySQL (MariaDB), P (php, python, perl, ruby)php
工做流程:html
web進程接受客戶端請求,客戶端請求的資源有動態的也有靜態,靜態資源請求web進程直接從磁盤讀取,動態資源請求須要服務器提供一個PHP語言的環境進行運行,運行過程可能須要讀取數據(由數據庫提供數據提升效率),將動態資源運行的結果給web進程,由web進程響應給用戶。python
爲了提升響應速度,可將web進程,php環境,數據庫分別部署在不一樣的服務器上。(這就是fcgi模式)mysql
早期有客戶端自行處理動態資源,得到運行結果(如瀏覽器的插件,flash等)linux
關於動態資源請求的工做圖web
CGI協議:Common Gateway Interface,通用網關接口
簡化版的http協議,用於web服務器與應用程序進程通訊;(在lamp體系中httpd進程調動php語言等其餘的進程)httpd須要CGI模塊才能成爲cgi協議的客戶端和其餘應用程序進程交流redis
httpd進程還將URL轉換成本地文件路徑發給編程語言環境進程,由該進程本身調用文件 sql
PHP語言有一套本身完整的解釋器,無需依賴linux操做系統的特別命令mongodb
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),安裝完成須要從新加載!