LAMMP架构的企业级应用
LAMMP是什么
LAMMP的实现
LAMMP适用的生产环境
一、LAMMP是什么
LAMMP,是几个英文单词首字母的缩写。
L是Linux的缩写,Linux操作系统,Linux以稳定、安全、且开源著称的操作系统,适用于做 服务器。
A是Apache的缩写,Apache是一款提供Web服务器的开源软件,Apache是一个极具稳定安全、高度模块化、支持模块动态扩展的Web服务器,是搭建Web服务器的首选之一,据统计全球有50%左右的Web服务器是用Apache搭建的。http://www.netcraft.com/ 这个网站,是对全球web服务器的排名。
M是Mysql的缩写,Mysql是数据库管理系统,数据库管理软件,也是开源软件。
M是Memcached的缩写,Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。
Memcached是一款开发工具,它既不是一个代码加速器,也不是数据库中间件。其设计哲学思想主要反映在如下方面:
1. 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;
2. 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期;
3. 各服务器间彼此之间不互相通信:不在服务器间进行数据同步;服务器宕机,存储的数据立即丢失
4. O(1)的执行效率
5. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长;
P是PHP的缩写,是一种面向对象的编程语言。
相关阅读:
LAMMP的架构拓扑图:
此LAMMP架构是分别搭建在不同的服务器上面,在生产环境中,更是应该如此,一台服务器提供多种应用,服务器会很消耗资源,提供服务的性能也会降低。
此架构中各服务器的工作
Apache在此架构中,响应回复用户html的请求
FastCGI是把php程序执行的结果响应给Apache
Memcached是根据用户请求的动态网页文件中是否需要Memcached服务器缓存数据,Memcache是把数据存储在内存中的,速度可想而知了。
Mysql是响应用户是否需写入查询数据
用户的请求资源到获取资源的过程
1、当用户只需要请求web服务器的html页面时,Apache直接响应请求,所经过的过程为1--->8
2、当用户需请求一个web服务器的动态的页面时,Apache把用户请求的php执行程序发送给FastCGI服务器执行,FastCGI把执行的结果返回给Apache服务器,服务器把程序生成的的静态页面响应给客户端。所经过的过程1--->2--->7--->8
3、当用户需要请求的web服务器资源中需要数据时,Apache把用户请求的php执行 程序给FastCGI执行,执行过程中需要对数据进行操作时且Memcached中没有缓存时,FastCGI去请求Mysql服务器的资源,mysql服务器把数据响应给FastCGI,如果此数据需要缓存则FastCGI把数据缓存到Memcached服务器上,然后把数据响应给Apache,Apache生成静态的页面响应给客户端。所经过的过程1--->2--->5--->6[--->3]--->7--->8(如果需要缓存则会经过3过程)
4、当用户需要请求的web服务器资源中需要数据时,Apache把用户请求的php执行程序给 FastCGI执行,执行过程中需要对数据进行操作时Memcached中有缓存时,Memcached直接把 数据响应给FastCGI,然后把数据响应给Apache,Apache生成静态的页面响应给客户端。所经过的过程1--->2--->3--->4--->7--->8
二、LAMMP的实现
Apache服务器所需的软件包
apr-1.4.6.tar.bz2
http://mirror.esocc.com/apache/apr/apr-1.4.6.tar.bz2
apr-util-1.5.2.tar.bz2
http://mirror.esocc.com/apache/apr/apr-util-1.5.2.tar.bz2
httpd-2.4.6.tar.bz2(提供Web服务器的软件包)
http://mirror.esocc.com/apache/httpd/httpd-2.4.6.tar.bz2
由于httpd-2.4的包linux系统中的apr版本不够新,所以需要下载更新的apr相关的包,直接下载源码包进行安装。
FastCGI服务器所需的软件包
libmcrypt
http://mirrors.sohu.com/fedora-epel/6Server/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm
libmcypt-devel
http://mirrors.sohu.com/fedora-epel/6Server/x86_64/libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
xcache-3.0.3.tar.bz2 (缓存php执行好的代码,加速opcode)
http://xcache.lighttpd.net/pub/Releases/3.0.3/xcache-3.0.3.tar.bz2
php-5.4.19.tar.bz2 (提供php-fpm(FastCGI)服务的软件包)
http://downloads.php.net/stas/php-5.4.19.tar.bz2
memcache-2.2.7.tgz (FastCGI连接Memcache服务器的软件包)
http://pecl.php.net/get/memcache-2.2.7.tgz
Memcached服务器所需的软件包
libevent-2.0.21-stable.tar.gz
http://nchc.dl.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.21-stable.tar.gz
memcached-1.4.15.tar.gz (安装Memcached服务器的软件包)
http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
Mysql服务器所需的软件包
mysql-5.5.33-linux2.6-x86_64.tar.gz
http://downloads.skysql.com/archives/mysql-5.5/mysql-5.5.33-linux2.6-x86_64.tar.gz
安装的是mysql的通用二进制程序包,此软件包解压之后就可以使用
思路:
1、每个服务器的安装操作都是独立,但是最后需要建立关系
2、解决WEB怎么连接PHP-FPM(FastCGI)
3、解决PHP-FPM(FastCGI)怎么连接Memcached
4、解决PHP-FPM(FastCGI)怎么连接Mysql