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) 收藏 举报
浙公网安备 33010602011771号