精华内容
下载资源
问答
  • lnmp原理
    2019-02-18 09:01:00

    在linux系统中,LNMP是目前网站主流架构之一,LNMP中L指linux系统平台,N是nginx指网站的前端程序,发布静态页面和调用外部程序解析动态页面,M是mysql指网站的后台数据库,P是PHP指网页编程语言。

    LNMP工作原理如下图所示:

                    图14-1  LNMP工作原理图

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

    简单的理解为:客户端的所有的页面请求先到达lnmp结构中的nginx,nginx根据自己的判断哪些是静态页面,哪些是动态页面,如果是静态页面直接由nginx自己处理就可以返回结果给客户端了,如果*.php动态页面nginx需要调用php中间件服务器处理,在处理PHP页面的过程中可能需要调用mysql数据库的数据完成页面编译,编译完成后的页面返回给nginx,nginx再返回给客户端。

    与LNMP对应的是LAMP,LAMP是指Linux、Apache、MySQL和PHP的结构体系。LAMP工作原理是浏览器向服务发送http请求,服务器(Apache)接受请求,由于php作为Apache的组件模块也会一起启动,它们具有相同的生命周期。Apache会将一些静态资源保存,然后去调用php处理模块进行php脚本的处理。脚本处理完成后,Apache将处理完的信息通过http response的形式转送给浏览器。浏览器再进行解析与渲染然后进行呈现。

    转载于:https://www.cnblogs.com/momenglin/p/10393744.html

    更多相关内容
  • 今天继续给大家介绍Linux运维的相关知识,本文主要内容是LNMP原理与简单部署。 一、LNMP架构原理 二、LNMP部署实战 (一)YUM源配置 (二)Nginx安装与部署 (三)PHP安装与部署 (四)MySQL安装与部署

    今天继续给大家介绍Linux运维的相关知识,本文主要内容是LNMP原理与简单部署。

    一、LNMP架构原理

    LNMP架构,是指在Linux平台下,由运行Nginx的web服务器,运行PHP的动态页面解析程序和运行MySQL的数据库组成的网站架构,也是当前常用的系统架构之一。
    在LNMP架构中,Nginx本身只负责静态页面的处理,当需要处理动态页面时,则需要Nginx将相关.php页面转交给php-fpm来进行处理,php-fpm会将PHP页面解析成html文件,然后交给Nginx进行处理。
    与LAMP架构相比,LNMP的主要区别在于对PHP的处理上,LAMP对于PHP动态资源的处理是通过Apache的libphp5.so模块进行的,该模块内嵌如Apache中,而Nginx对PHP动态资源的处理则是通过php-fpm进行的,php-fpm是一个独立的模块,因此,在搭建LNMP架构时,Nginx和php-fpm都需要进行开启。LNMP架构如下所示:
    在这里插入图片描述

    二、LNMP部署实战

    接下来,我们就进行LNMP的部署实战。

    (一)YUM源配置

    在进行实战YUM部署LNMP前,我们要首先配置LNMP的YUM源。想要YUM安装Nginx,就必须安装EPEL的扩展源,可以执行以下命令进行EPEL扩展源的安装:

     yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    

    (二)Nginx安装与部署

    Nginx的安装非常简单,只需要执行命令:

    yum install -y nginx
    

    即可,Nginx安装完毕后,Nginx的启动命令为:

    systemctl start nginx
    

    启动后,尝试访问Nginx页面,结果如下:
    在这里插入图片描述
    以这种方式安装的Nginx,其默认配置文件为/etc/nginx/nginx.conf,默认根目录为/usr/share/nginx/html。

    (三)PHP安装与部署

    接下来,我们需要安装PHP,并使得PHP支持Nginx。首先,安装PHP和PHP与Nginx的对接php-fpm,执行命令:

    yum install -y php php-fpm
    

    在安装完成后,我们还需要修改Nginx的配置文件,在http模块的server模块下,添加如下内容:

    location ~ \.php$ {
            root html;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
            }
    

    添加后的页面如下所示:
    在这里插入图片描述
    在以上配置中,location模块是Nginx的一个定位模块,location后面的“~”表示进行正则表达式的匹配,匹配的对象是以.php结尾的动态资源。这样,当这样的资源被匹配到之后,就会进行location模块中指定的处理。fastcgi_pass指定了php-fpm模块的IP地址和端口号,fastcgi_param参数指定了读取php文件的位置。
    上述安装完成后,在网站根目录中写一个PHP的测试页面,重启PHP后尝试访问,结果如下:
    在这里插入图片描述

    (四)MySQL安装与部署

    最后,我们来安装MySQL,MySQL的安装比较简单,只需要执行命令:

    yum install -y mariadb mariadb-server
    

    安装完成后,发现当前系统打开了3306、9000和80端口,如下所示:
    在这里插入图片描述
    为了使得我们的PHP支持MySQL,还需要安装php-mysql,如下所示,这样,安装完成后,我们的PHP就可以与MySQL对接了。
    尝试安装wordpress,结果如下所示:
    在这里插入图片描述
    原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

    展开全文
  • LNMP原理介绍

    2019-07-30 20:33:33
    一、LNMP的简介: LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Mysql是一个小型关系型数据库管理系统。PHP是一种...

    一、LNMP的简介:
    LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Mysql是一个小型关系型数据库管理系统。PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
    二、LNMP的特点:
    Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler 站点开发的,已经在一些俄罗斯的大型网站上运行多年,相当的稳定。Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。
    三、LNMP的优点:
    1.作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。
    2.作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。
    3.作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。
    4.Nginx 安装非常的简单:配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

    在这里插入图片描述

    在这里插入图片描述
    nginx和php之间通过fastcgi_pass连接
    fastcgi是静态程序和动态程序连接的接口
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • lnmp 原理

    千次阅读 2017-10-26 22:48:29
    LNMP的工作原理

    LNMP的工作原理

    浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求。如果是静态文本直接返回,否则将脚本(PHP)通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),然后PHP-FPM调用PHP解析器的其中一个进程PHP-CGI来解析php脚本信息。【PHP-FPM在启动时启动了多个PHP-CGI子进程,并发执行。】然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx。服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。


    LAMP的工作原理

    浏览器向服务器发送http请求,服务器 (Apache) 接受请求,由于php作为Apache的组件模块也会一起启动,它们具有相同的生命周期。Apache会将一些静态资源保存,然后调用php去处理模块进行php脚本的处理。脚本处理完后,Apache将处理完的信息通过http response的方式发送给浏览器,浏览器解析,渲染等一系列操作后呈现整个网页。


    LAMP LNMP差别

    1、在LNMP中,Nginx本身对脚本不做任何的处理,而是把请求发fast-cgi管理进程处理,fast-cgi管理进程选择cgi子进程处理结果并返回,二者是相互独立的,通过管道进程通信。
    2、在LAMP中,PHP是Apache的一个模块,具有相同的生命周期。两者通过共享内存的方式通信。

    两者的PHP环境不相互适用
    相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率


    lnmp 各模块协作图

    lnmp 各模块协作图


    Fast-CGI 介绍

    cgi是通用网关接口,是外部应用程序与Web服务器之间的接口标准,cgi是为了保证web server传递过来的数据是标准格式的,方便cgi程序的编写者。

    Fast-CGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。

    Fast-cgi像是一个常驻(long-live)型的cgi,是用来提高cgi程序性能的。

    fast-CGI是nginx和php之间的一个通信接口,该接口实际处理过程通过启动php-fpm进程来解析php脚本,即php-fpm相当于一个动态应用服务器,从而实现nginx动态解析php。因此,如果nginx服务器需要支持php解析,需要在nginx.conf中增加php的配置;将php脚本转发到fastCGI进程监听的IP地址和端口(php-fpm.conf中指定)。同时,php安装的时候,需要开启支持fastCGI选项,并且编译安装php-fpm补丁/扩展,同时,需要启动php-fpm进程,才可以解析nginx通过fastCGI转发过来的php脚本。


    Fast-CGI的工作原理

    1. Web Server启动时载入Fast-CGI进程管理器(IIS ISAPI或Apache Module)
    2. FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
    3. 当客户端请求到达Web Server时,Fast-CGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到Fast-CGI子进程php-cgi。
    4. Fast-CGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当Fast-CGI子进程关闭连接时,请求便告处理完成。Fast-CGI子进程接着等待并处理来自Fast-CGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

    在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用Fast-CGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。


    Fast-CGI的不足

    因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。

    Nginx 0.8.46+PHP 5.2.14(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。

    上面的数据摘自Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)


    PHP-FPM

    PHP-FPM是一个实现了Fastcgi的程序,PHP-FPM的管理对象是php-cgi。被PHP官方收了。
    后来PHP内核集成了PHP-FPM之后就方便多了,使用–enalbe-fpm这个编译参数即可。

    1、php-fpm是一个完全独立的程序,不依赖php-cgi,也不依赖php。因为php-fpm是一个内置了php解释器的FastCGI服务,启动时能够自行读取php.ini配置和php-fpm.conf配置.
    2、一个master进程,支持多个pool,每个pool由master进程监听不同的端口,pool中有多个worker进程.
    3、每个worker进程都内置PHP解释器,并且进程常驻后台,支持prefork动态增加.
    4、每个worker进程支持在运行时编译脚本并在内存中缓存生成的opcode来提升性能.
    5、每个worker进程支持配置响应指定请求数后自动重启,master进程会重启挂掉的worker进程.
    6、每个worker进程能保持一个到MySQL/Memcached/Redis的持久连接,实现"连接池",避免重复建立连接,对程序透明.
    7、master进程采用epoll模型异步接收和分发请求,listen监听端口,epoll_wait等待连接,
    8、然后分发给对应pool里的worker进程,worker进程accpet请求后poll处理连接,
    9、如果worker进程不够用,master进程会prefork更多进程,
    A、如果prefork达到了pm.max_children上限,worker进程又全都繁忙,这时master进程会把请求挂起到连接队列backlog里(默认值是511).


    PHP-CGI

    php-cgi 是解释PHP脚本的程序,只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理


    Nginx+FastCGI运行原理 

    nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。

    wrapper: 为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接收到请求,然后Fork(派生)出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据(html页面或者图片)发送给客户端。这就是Nginx+FastCGI的整个运作过程,

    运行过程

    所以,我们首先需要一个wrapper,这个wrapper需要完成的工作:

    1、通过调用fastcgi(库)的函数通过socket和ningx通信(读写socket是fastcgi内部实现的功能,对wrapper是非透明的)
    2、调度thread,进行fork和kill
    3、和application(php)进行通信


    结束

    本文是学习了其他相关博客总结下来的,参考博客有

    http://blog.csdn.net/huobobo124/article/details/52971479
    http://www.cnblogs.com/it-cen/p/4320261.html?comefrom=http://blogread.cn/news/
    http://www.thinkphp.cn/topic/42338.html

    展开全文
  • 文章目录一、企业级高可用、高并发lnmp集群——基础知识篇 一、企业级高可用、高并发lnmp集群——基础知识篇
  • LNMP原理及分离部署的实现

    千次阅读 多人点赞 2020-05-25 09:14:08
    1. LNMP理论 fastcgi的主要优点: 把动态语言和http服务器分离开来,使nginx可以处理静态请求和向后转发动态请求,而php/php-fpm服务器转移解析PHP动态请求 使用fastcgi的原因: Nginx 不支持对外部动态程序的直 接...
  • 1、一、lnmp(lamp)的定义 apache一般是把php当做自己的一个模块来启动;而ngnix则是把http请求变量转发给php进程,即php独立进程,与ngnix通信,这种方式叫做FastCGI运行方式。 apache所编译的php不能用于ngnix。 ...
  • LNMP工作原理

    2020-09-24 20:16:08
    1、静态网站 nginx服务器能处理的是静态元素 .html  .jpg .mp4 .css 2、NGINX ngx_fastcgi_modul 处理动态请求的接口 nginx 通过ngx_fastcgi_modul模块 链接 php-fpm处理动态请求。...以上整个就是LNMP的工作过程。
  • 简述LNMP的工作原理

    2019-07-13 11:24:13
    ##细化其中的工作原理 关键在于nginx和php这一块的通信流程和运行 Nginx不支持对外部程序的直接调用或者解析 ,所有的外部程序(包括PHP)必须通过 FastCGI接口来调用 。FastCGI接口在Linux下是socket(这个...
  • lnmp搭建过程以及原理

    2020-02-13 21:11:01
    lnmp架构介绍组成部分: lnmp架构有很多架构,下面简单介绍几种 ...普遍:linux nginx mysql Tomcat 新型: linux nginx mysql python lnmp架构原理过程 架构原理: 1)用户向网站发起访问 静态访...
  • LNMP架构原理

    千次阅读 2019-10-17 10:25:10
    要了解LNMP架构原理,首先你得知道LNMP架构是啥? LNMP = Linux +Nginx + MySQL + PHP 现在有两种主流得架构,一个是今天要讲的 LNMP , 还有一个就是 LAMP。简单说明一下, LAMP = Linux + Apache + MySQL +PHP ...
  • 脑袋一片空白~~,只知道按照那么长的一篇文档一步步的来做就能实现lnmp的搭建。最近工作闲暇之余又想起来了这个悲惨的事情,然后我就想能不能不看文档就把lnmp环境搭建起来呢(当然我知道有一键安装脚本这个东东,...
  • 一、lnmp集群——基础知识篇 1.1 什么是lnmpLNMP是目前网站主流架构之一,LNMP中L指linux系统平台,N是nginx指网站的前端程序,发布静态页面和调用外部程序解析动态页面,M是mysql指网站的后台数据库,P是PHP指...
  • 二、lnmp的工作原理Fast-CGI 介绍 一、什么是lnmpLNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。 L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指...
  • 二、LNMP通信原理三、数据库可以分为哪两类?四、LNMP环境搭建与配置 LNMP架构 一、什么是LNMPLNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。 L:操作系统(Linux) N :Web应用...
  • 3、LNMP工作原理      第一步,浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上。  第二步,将php脚本通过接口传输协议(网关协议)...
  • LNMP 是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写...LNMP架构原理 Nginx(fastcgi_pass) → FastCGI → (PHP-fpm → wrapper)php (php解析器)→mysql(读取或写入) 1.用户通过 htt...
  • LNMP架构介绍及原理流程

    千次阅读 2018-07-13 00:57:10
    LAMP==Linux+Apache+Mysql+PHPLNMP==Linux+Nginx+Mysql+PHP以上两个架构是目前网站的主流架构LNMP的工作原理LNMP是指LNMP==Linux+Nginx+Mysql+PHP的结构体系。其工作原理如下:首先,浏览器发送http request请求到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,791
精华内容 2,316
关键字:

lnmp原理