天天看点

LAMP

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),安装完成需要重新加载!