LAMP架构原理


一、LAMP简介

LAMP(Linux-Apache-MySQL-PHP)网站架构是目前流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl,PHP或者Python编程语言,所有组成产品均是开源软件,是成熟的架构框架,很多流行的商业应用都是采取这个框架,LAMP具有通用、跨平台、高性能、低价格的优势;因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台

二、LAMP架构以及通信过程

2.1、LAMP的架构

LAMP是一个多C/S架构的平台,最初级为web客户端基于TCP/IP通过http协议发起传送,这个请求可能是动态的,也可能是静态的。

所以web服务器通过发起请求的后缀来判断,如果是静态的资源就由web服务器自行处理,然后将资源发给客户端。如果是动态这时web服务器会通过CGI(Common Gateway interface)协议发给PHP。

但是如果php是以模块形式与Web服务器联系。那么它们是通过共享内存的方式。如果是PHP单独的放置与一台服务器,那么它们是通过sockets套接字监听的方式通信(这又是一个C/S架构)。

这时php会相应的执行一段程序,如果执行程序时,需要用到数据。那么php就会通过mysql协议发送给mysql服务器(也可以看作是一个C/S架构)。由mysql服务器处理,将数据供给php程序。

2.2、LAMP流程

1.用户发送http请求到达httpd服务器

2.httpd解析url获取需要的资源路径,通过内核空间读取硬盘资源,如果是静态资源,则构建响应报文,发回给用户

3.如果是动态资源,将资源地址发给php解析器,解析php程序文件,解析完毕将内容发回给httpd,httpd构建响应报文,发回给用户

4.如果涉及到数据库操作,则利用php-mysql驱动,获取数据库数据,返回给PHP解析器

2.3、A    M    P联动

1.apache+php 结合的方式有三种:

第一种:把php编译时直接编译成apache的模块,module模块化的方式进行工作(apache默认的这种方式)

第二种:CGI、通用网关接口、apache基于CGI跟php通信

第三种:fastcgi、它也是一种协议、在这种模块下它们两个是这样结合的:

    本来php是做为一个模块或者是php解析器运行的,不是监听在某个套接字上接收别人的请求的,而是让别人调用为一个进程使用的,可能是做为别人的子进程在运行。

    但是工作在fastcgi这种模块下的php自行启用为一个服务进程,它监听在某个套接字上,随时可以接受来自客户端的请求,它也是一个主进程,为了可以响应多个用户的请求,它会启用多个子进程,这些子进程我们也可以称为工作进程。

    它也是有空间进程的,一但有客户请求它马上使用空闲的进程响应客户端的请求,将结果返回给前端的调用者,在php5.3版本之前它是没有这个功能的,只能工作在模块和CGI的方式下,而在php5.3之后这个模块直接被收进php模块中,这种模块叫php-fpm

    所以在以后编译php时,要想跟apache结合,就要编译成php-fpm,这是基于fastcgi工作的模式,并启动这个服务进程,也就意味着它是通过套接字跟前端的调用者通信,既然基于套接字通信了,那么前端的web服务器和后面的php服务器完全可以工作在不同的主机上,实现了所谓的分层机制。

    apache不会跟数据库打交道,它是个静态web服务器,跟数据库打交道的是应用程序,作为应用程序的源驱动能够基于某个API跟服务器之间建立会话,而后它会通过我们的mysql语句发送给数据库,数据库再将结果返回给应用程序,不是php进程,而是php进程中所执行的代码。

2.php+mysql的通信

    首先httpd并不具备解析代码的能力,它要依赖于php的解析器,接着php本身不依赖于mysql,它只是一个解析器,能执行代码就OK了。

    如果要在mysql中存数据时才用到mysql,只是当php中有运行mysql语句时才用到mysql。

    php语言要想联系mysql,通常用到php的驱动,rpm包的叫php-mysql、php跟mysql没有一点关系,只是程序员在php中编写mysql语句时才连接mysql来执行sql语句的。

    基于php-mysql去连接mysql只使用一个函数mysql_connect();而mysql_connect()正是php-mysql提供的一个API,只要指明连接的服务器即可。

LAMP架构说明.png

编译安装LAMP参见:编译安装LAMP


声明:Jason|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - LAMP架构原理


Carpe Diem and Do what I like