LAMP

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

p_w_picpath

 

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的結合方式有三種:

  1. Module:將應用程序做爲第三方模塊,加載在httpd的進程中

  2. cgi:web服務器根據客戶端的動態請求開啓一個子進程,該子進程就是PHP負責運算,運算完成後由httpd進程銷燬

  3. 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),安裝完成須要從新加載!

相關文章
相關標籤/搜索