8、lanmp概念

LAMP:

  • L:Linux
  • A:Apache
  • M:Mysql
  • P:PHP、Perl、Python

LAMMP:增加了Memcached

LNMP:将Apache改为nginx

静态资源:静态内容,客户端从服务器上获得的文件的表现形式,与原文件相同。

动态资源:通常是程序文件,如php、perl、python文件,需要在服务器执行之后

 

静态资源获取过程:客户端向apache发起请求,apache从存储中获取资源,apache将这些资源原样的返回给客户端。文件也是通过数据流(tcp时),进行传输。

动态资源的获取过程:客户端向apache发起请求,apache通过cgi调用php、perl或python程序,这些程序经过一系列的处理,如从存储中获取、保存信息,在这些程序处理完请求之后,将结果返回给apache(结果虽然不是文件,但但apache与客户端的传输都是通过数据流传递),apache将响应报文返回给客户端。

如下图:

 

其中,红线是静态资源请求过程;蓝线是动态资源请求过程。

cgi相当一个简化版的http协议。此时apache做为客户端,php做为服务器;apache向php发起处理请求。

httpd -M | grep cgi

在apache与应用程序(如php、perl、python) 之间需要通过cgi进行通信,即它们之间需要进程间的通信。如果是跨主机,则使用套接字通信;如是同一台主机,可以通过消息队列、共享内存、管理等等进程间的通信。

 

cgi:Common Gateway Interface

apache拥有cgi程序,甚至可以不要求程序有服务器(如c、bash),当然也可以有服务器(如php、perl、python)。

但是这样apache对每个动态资源的请求,都要创建一个子进程,去调用相应的应用程序如c、bash、php、perl、python。这样的结果,是apche开销太大。

fast cgi:

因此,通常是由php、perl、python作为一个服务器,监听套接字;apache不再创建子进程去调用相应程序,而是作为客户端,向php、perl、python服务器发起套接字请求,由php、perl、python为每次apache请求,创建子进程或线程去响应;将apache为每个动态资源请求开启子进程的压力、开销转移到php、perl、python,apache仅作为前端服务器,不再解析cgi。这种cgi,称为fast cgi。

 

程序,由指令和数据组成。

程序与数据库系统的调用,是程序作为客户端,数据库作为服务器。

程序调用数据库,是通过调用程序提供的数据库驱动(也是一个程序模块)提供的API,向数据库发起请求,数据库通过数据库驱动再解析出数据的响应数据,提供给程序使用。

如PHP的数据库驱动:php-odbc.x86_64是底层的开放数据库程序,php-mysql.x86-64是对底层的封装,封装之后,作为数据库驱动提供给php的其它程序调用。

# yum list all php*   #查看php的程序包

 

posted on 2019-03-02 08:51  myworldworld  阅读(525)  评论(0)    收藏  举报

导航