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等)
关于动态资源请求的工作图
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),安装完成需要重新加载!
原文:http://5489884.blog.51cto.com/5479884/1706079