电商平台 lnmp 和 lamp 架构介绍

电商平台 lnmp 架构介绍

    • 1. Lnmp 介绍
    • 2. Lamp 介绍
    • 3. lamp与lnmp的区别

1. Lnmp 介绍

  1. Lnmp的含义
    LNMP 是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。其中L指Linux,N 指Nginx,M一般指MySQL,也可以指 MariaDB,P一般指PHP,也可以指Perl或Python。
    LNMP 代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构;
    Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP代理服务器;
    Mysql 是一个小型关系型数据库管理器;
    PHP 是一种在服务器端执行的嵌入HTML文档的脚本语言;
    这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

  2. lnmp 工作原理

  • 客户端通过http协议发起请求,该请求最先会到达lnmp架构中的nginx;
  • nginx会根据用户的请求进行判断,该判断是由nginx中的location模块完成的;
    若nginx判断请求是静态页面,则由nginx直接处理并返回客户端;
    如果请求是动态页面,nginx会将该请求交给fastcgi协议进行下发;
  • fastcgi会将请求交给php-fpm管理进程,该进程接收到后会调用具体的工作进程wrapper;
  • wrapper线程会调用php进行解析,如果是单纯的解析php代码,那么结果会直接返回给客户端;
    如果有数据库操作,那么php会连接到数据库,然后发起操作;
    最后数据原路返回,由mysql–>php–>php-fpm–>fastcgi–>nginx–>http–>client

浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx.服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。

注意:PHP-FPM(FastCGI Process Manager)是一个FastCGI管理器,fast-cgi是php的一个模块。

  1. lnmp 特点

    Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。

  • 优点
    占用VPS(虚拟专用服务器)资源较少,Nginx配置起来也比较简单,利用fast-cgi的方式动态解析PHP脚本。
    作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率;
    作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务;
    Nginx 安装非常的简单,配置文件非常简洁,Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

  • 缺点
    php-fpm组件的负载能力有限,在访问量巨大的时候,php-fpm进程容易僵死,容易发生502 错误

2. Lamp 介绍

  1. lamp 含义
    LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。
    lamp是指Linux+Apache+MySQL+PhP架构

  2. lamp简介

    lamp架构的工作流程是由浏览器发送http请求,Apache服务器接受请求,而PHP是Apache的一个模块,具有相同的生命周期,两者通过共享内存的方式通信,因此php作为Apache的组件模块也会一起启动。Apache会将一些静态资源保存,然后调用php模块进行php的脚本的处理。php处理完后,Apache会将处理完的数据通过http response的方式发送回客户端浏览器解析,然后呈现整个网页。

3. lamp与lnmp的区别

  • 在LNMP中,Nginx本身对脚本不做任何的处理,只是进行转发,把请求发给fast-cgi管理进程处理fast-cgi管理进程选择cgi子进程处理结果并返回,二者是相互独立的;

  • 在LAMP中,PHP是Apache的一个模块,具有相同的生命周期,两者通过共享内存的方式通信,php作为Apache的组件模块会一起启动
    LAMP方式会多占用资源较多,且配置虚拟主机要同时修改Nginx和Apache的配置文件,操作较为复杂;

  • LNM使用资源更少,支持更多并发连接,效率更高。作为负载均衡服务器,nginx即可对内进行支持,也可对外进行服务,安装简单,配置简洁

  • Apache本身处理PHP的能力比php-fpm强,适合访问量较大的站点使用
    注意:Apache编译的PHP不能用nginx用户。

为什么在大多数情况下 nginx 都比 apache 响应要迅速?

主要是因为 nginx高并发的功能优越于 apache;

  • 因为他们所采用的 I/O复用方式不同,Nginx使用了epoll 的I/O模型,而Apache使用的是传统的select模型;
  • select 方式仅仅知道有I/O事件发生了,却不知道是哪几个流,所以只能无差别轮询所有流,找出能读出数据,或者写入数据的流,然后进行操作;
  • 而 epoll 会主动通知哪个流发生了怎样的I/O事件,所以 epoll 实际上是事件驱动的,对这些流的操作就比较高效;
  • 目前 Linux下能够承受高并发访问的Squid、Memcached 缓存都采用的是epoll网络I/O模型,该模型可以处理大量的连接的读写,Apache所采用的select网络I/O模型较为低效。

你可能感兴趣的:(运维,运维,nginx,linux)