LAMP由来编辑本段回目录
LAMP名称起源编辑本段回目录
LAMP网站架构方案分析编辑本段回目录
(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比, 具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比, 具有通用、跨平台、高性能、低价格的优势,因此 无论是性能、质量还是价格都是企业搭建网站的首选平台。
对于大流量、大并发量的网站系统架构来说,除了硬件上使用高性能的服务器、负载均衡、CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS)、高性能的网页服务器(Web Server)、高性能的数据库(Databse)、高效率的编程语言等。下面我将从这几点对其一一讨论。
操作系统
Linux操作系统有很多个不同的发行版,如Red Hat Enterprise Linux、SUSE Linux Enterprice、Debian、Ubuntu、CentOS等,每一个发行版都有自己的特色,比如RHEL的稳定,Ubuntu的易用,基于稳定性和性能的考虑,操作系统选择CentOS(Community ENTerprise Operating System)是一个理想的方案。
CentOS(Community ENTerprise Operating System)是Linux发行版之一,是RHEL/Red Hat Enterprise Linux的精简免费版,和RHEL为同样的源代码,不过,RHEL和SUSE LE等企业版,提供的升级服务均是收费升级,无法免费在线升级,因此要求免费的高度稳定性的服务器可以用CentOS替代Red Hat Enterprise Linux使用。
网站架构图
Web服务器、缓存和PHP加速
Apache是
架构最核心的Web Server,开源、稳定、模块丰富是Apache的优势。但Apache的缺点是有些臃肿,内存和CPU开销大,性能上有损耗,不如一些轻量级的Web服务器(例如nginx)高效,轻量级的Web服务器对于静态文件的响应能力来说远高于Apache服务器。Apache做为Web Server是负载PHP的最佳选择,如果流量很大的话,可以采用nginx来负载非PHP的Web请求。nginx是一个高性能的HTTP和反向代理服务器,Nginx以它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx不支持PHP和CGI等动态语言,但支持负载均衡和容错,可和Apache配合使用,是轻量级的HTTP服务器的首选。
Web服务器的缓存也有多种方案,Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。Squid Cache是一个Web缓存服务器,支持高效的缓存,可以作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,把Squid放在Apache的前端来缓存Web服务器生成的动态内容,而Web应用程序只需要适当地设置页面实效时间即可。如访问量巨大则可考虑使用memcache作为分布式缓存。
PHP的加速使用eAccelerator加速器,eAccelerator是一个自由开放源码PHP加速器,优化和动态内容缓存,提高了性能PHP脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使PHP程序代码执效率能提高1-10倍。
具体的解决方案有以下几种:
1、squid + Apache + PHP + eAccelerator
使用Apache负载PHP,使用squid进行缓存,html或图片的请求可以直接由squid返回给用户。很多大型网站都采用这种架构。
2、nginx/Apache + PHP(fastcgi) + eAccelerator
使用nginx或Apache负载PHP,PHP使用fastcgi方式运行,效率较高。
3、nginx + Apache + PHP + eAccelerator
此方案综合了nginx和Apache的优点,使用Apache负载PHP,nginx负责解析其他Web请求,使用nginx的rewrite模块,Apache端口不对外开放。
数据库
开源的数据库中,MySQL在性能、稳定性和功能上是首选,可以达到百万级别的数据存储,网站初期可以将MySQL和Web服务器放在一起,但是当访问量达到一定规模后,应该将MySQL数据库从Web Server上独立出来,在单独的服务器上运行,同时保持Web Server和MySQL服务器的稳定连接。
当数据库访问量达到更大的级别,可以考虑使用MySQL Cluster等数据库集群或者库表散列等解决方案。
总的来说,
架构的网站性能会远远优于Windows IIS + ASP + Access(例如月光博客)这样的网站,可以负载的访问量也非常大,国内的大量个人网站如果想要支撑大访问量,采用 架构是一个不错的方案。综上所述,基于
架构设计具有成本低廉、部署灵活、快速开发、安全稳定等特点,是Web网络应用和环境的优秀组合。LAMP将长命百岁? 细看Web技术的养生之道编辑本段回目录
过去数年,代表Linux-Apache-MySQL-PHP的LAMP一直是最流行的Web开发平台,但新的平台,如Ruby on Rails,ASP.NET和J2EE在Web开发领域已经成为闪耀的明星,我们不禁想问,时至今日,LAMP仍然是Web开发最流行的选择吗?我目前认为它仍然是最流行的选择,LAMP之所以很受欢迎,是因为与其它平台相比,它具有很多优势。
成本低廉,扩展能力好
诚然,在比较开源的LAMP平台和商业化运作的,如J2EE或ASP.NET平台时,成本肯定是首先要考虑的因素,开源产品可免费下载使用,其本身 的成本很廉价,此外,LAMP对硬件的要求也较低,而J2EE和ASP.NET对硬件的要求要高一些,在Web托管领域,LAMP类型的托管服务通常比 J2EE和ASP.NET类型的要廉价一些。
有很多分析师认为LAMP虽然可以快速构建Web应用程序,但LAMP的扩展性并不好,要想取得良好的扩展能力付出的代价可能比当初构建Web应用 程序还要多,但根据我的经验,LAMP的扩展性不佳不是因为平台本身的原因,而是开发的原因,很多不具备扩展能力的代码都是开发人员的“杰作”,为此我还 专门研究了大量的Java和ASP代码,发现一样存在这个问题,最后发现经验不足的开发人员往往容易写出不具有良好扩展能力的代码,事实上,很多人根本不 是自己写的代码,而是从其它地方直接复制过来的。
部署量大,安全性高
LAMP因其部署量非常大,安全问题也更少,因为能发现的问题几乎都被翻了过遍,它也是全世界范围内测试最彻底的软件组合。
当然,我并不是说LAMP组合就没有安全问题了,但大多数时候LAMP中暴露的安全问题都是因缺少经验的开发人员未遵循最佳实践编写的代码包含漏洞,或经验不足的系统管理员未正确配置LAMP造成的。
灵活,稳定
LAMP也提供了非常好的灵活性,开发人员可以选择自己喜欢的框架,甚至构建自己的框架,其它平台通常包括它们自己的框架,可选择的余地很小,例 如,.NET框架是ASP.NET开发的唯一选择,J2EE是基于Java的框架,Rails则基于Ruby框架,使用PHP时,开发人员可以选择 CakePHP,CodeIgniter,Zend Framework等框架。
使用LAMP还有另一个好处,开发人员可以获得全部的源代码,因此可以自行修改LAMP中的软件,以满足特殊需要,例如,Apache Web服务器支持可装载模块,开发人员可以开发自己的模块来处理特殊的任务,如通过可装载模块在Apache内实现身份认证,LAMP给开发人员提供了很 好的选择灵活度。
LAMP一向以稳定而著称,新版本的向后兼容性通常也比较好,即便是升级到了新版本,开发人员也很少需要重写代码,LAMP的模块化特性使得它可高度配置,在稳定性方面,与商业化的ASP.NET或J2EE解决方案相比,LAMP也是毫不逊色的。
开发门槛低,系统成型快
因LAMP均可免费获得,使其变得非常流行,降低了开发人员进入LAMP的门槛,但ASP.NET和J2EE都有认证计划,开发人员可以遵循最佳实践开发,而要界定一名LAMP开发人员是否遵循最佳实践则很难。
前面我也提到ASP.NET和J2EE可选择的框架很少,虽然我一度认为这是一个缺点,但对于大型开发团队来说却是一个优点,可选择的余地很少可以 让整个团队成员保持一致的知识体系,在培训和沟通方面都会节省很多时间,而LAMP阵营因可选的机会太多,团队成员个体容易养成独立的开发习惯和见解,会 给团队协作带来很大麻烦,因此我认为LAMP更适合一个人的开发团队或小型团队使用。
使用LAMP可以快速搭建起系统的原型,成本也很低廉,这是LAMP的一大强项,对于初创公司而言,可以利用LAMP快速搭建一个系统原型,进而吸引投资人,尽快获得投资。
小结
无论如何,LAMP仍然是非常流行的Web开发平 台,其低廉的成本和进入壁垒使得很多开发商都选择了它,LAMP安全、稳定和良好的扩展性也吸引了不少企业用户,对于初创公司,LAMP可以帮助其快速搭 建系统原型,进而拿到投资,LAMP的灵活性也成为很多人选择它的理由。因此,我们可以肯定地得出结论:LAMP仍然是Web开发最流行的选择,在未来相 当长一段时间里,它会和其它竞争技术共存。相关链接编辑本段回目录
参考文献编辑本段回目录
http://www.cnbeta.com/articles/117396.htm
http://en.wikipedia.org/wiki/LAMP_(software_bundle)