LAMP架构工作原理详解

Linux下LAMP(Linux+Apache+MySQL/MariaDB+Perl/PHP/Python)是一组用来搭建动态网站的开源软件架构,本身是各自独立的软件服务,放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。

本章向读者介绍互联网主流企业架构LAMP应用案例、PHP解释性语言详解、LAMP组合通信原理、LAMP企业源码架设、LAMP拓展及使用Redis提升LAMP性能优化等。

  • LAMP企业架构简介

随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。LAMP架构受到大多数中小企业的运维、DBA、程序员的青睐,Apache默认只能发布静态网页,而LAMP组合可以发布静态+PHP动态页面。

静态页面通常指不与数据库发生交互的页面,是一种基于w3c规范的一种网页书写格式,是一种统一协议语言,所以称之为静态网页。静态页面被设计好之后,一般很少去修改,不随着浏览器参数改变而内容改变,需注意的是动态的图片也是属于静态文件。从SEO角度来讲,HTML页面更有利于搜索引擎的爬行和收录。常见的静态页面以.html、.gif、.jpg、.jpeg、.bmp、.png、.ico、.txt、.js、.css等结尾。

动态页面通常指与数据库发生交互的页面,内容展示丰富,功能非常强大,实用性广。从SEO角度来讲,搜索引擎很难全面的爬行和收录动态网页,因为动态网页会随着数据库的更新、参数的变更而发生改变,常见的动态页面以.jsp、.php、.do、.asp、.cgi、.apsx等结尾。

  • Apache与PHP工作原理

LAMP企业主流架构最重要的三个环节,一是Apache WEB服务器,二是PHP(PHP: Hypertext Preprocessor),三是MYSQL数据库。

Apache WEB服务器主要是基于多模块工作,依赖PHP SAPI处理方式中的PHP_MODULE去解析PHP结尾的文件,如图12-1所示:

图12-1 Apache+PHP mod工作原理

PHP是一种适用于web开发的动态语言,PHP语言内核基于C语言实现包含大量组件的软件框架,是一种功能强大的解释型脚本语言。PHP底层运行机制如图12-2所示:

图12-2 PHP底层处理机制

PHP底层工作原理包括4个部分:

  • Zend引擎,属于PHP内核部分,它负责将PHP代码解析为可执行opcode的处理并实现相应的处理方法、实现基本的数据结构、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕Zend实现。
  • Extensions,围绕着Zend引擎,Extensions通过组件的方式提供各种基础服务,各种内置函数、标准库等都是通过Extension来实现。
  • Sapi,服务端应用编程接口(Server Application Programming Interface,Sapi),sapi通过一系列钩子函数,基于SAPI可以让PHP与外部进行数据交互。
  • 常见的SAPI编程接口处理方法包括:apache2handler:以apache作为webserver,采用MOD_PHP模式运行时候的处理方式;cgi:webserver和PHP直接的另一种交互方式,FastCGI协议;cli:命令行调用的应用模式。
  • APP代码应用,又称之为PHP代码程序,基于sapi接口生成不同的应用模式,从而被PHP引擎解析。

当用户在浏览器地址中输入域名或者域名+PHP页面,向HTTP WEB服务器Apache发起HTTP请求,WEB服务器接受该请求,并根据其后缀判断如果请求的页面是以.php结尾,WEB服务器从硬盘或者内存中取出该PHP文件,将其发送给PHP引擎程序。

PHP引擎程序将会对WEB服务器传送过来的文件进行扫描并根据命令从后台读取、处理数据、并动态地生成相应的HTML页面。然后PHP引擎程序将生成的HTML页面返回给WEB服务器,最终WEB服务器将HTML页面返回给客户端浏览器,浏览器基于MIME类型进行解析展示给用户页面。