LNMP架构的简介以及软件的部署

LNMP架构是Linux、Nginx、MySQL和PHP的组合,常用于构建高效网站服务器。Nginx处理静态内容,动态内容通过Fast-CGI交给PHP-FPM解析。本文详细介绍了LNMP的工作原理,包括Fast-CGI和PHP-FPM,以及LNMP软件的源码编译安装过程,包括MySQL、PHP和Nginx的配置与启动。
摘要由CSDN通过智能技术生成

在工作中经常听到说lnmp架构,那么lnmp架构到底是什么?
lnmp是目前互联网公司主流的一种WEB架构。
lnmp中
l 是linux操作系统
n 是nginx,用于发布web网站(针对的是静态网页,不连接数据库(html))nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。轻量级的web服务器软件,比apache轻量很多。处理静态网页效率是apache的十倍。
m 是mysql(Mariadb),是关系型数据库,是以二维表格存储的。主要用于存储数据,例如用户名,银行卡账号,余额,工资等。
p 是php((发布的是动态网站等)per或者python),php一种在服务器端执行的嵌入HTML文档的脚本语言,是一门主流的解释型语言。基于拍黄片编写的是php动态网页。动态网页无须编译的,如果要发布或者发布的话,是需要使用php模块或cgi程序的支持。将php动态网页解析为html静态网页,交由nginx或者apache发布。
lnmp就是linux,nginx,mysql和php搭建的一种网站服务器建构。这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

lnmp的应用场景

为什么要部署lnmp架构,主要是用于发布web静态+php动态网页。用于通过浏览器进行访问,构成绚丽多彩互联网冲浪。

一、lnmp的工作原理

在这里插入图片描述
在这里插入图片描述
1、用户通过浏览器访问nginx WEB网站,通过域名解析,发起三次握手
2、当请求到达nginx ,nginx服务器接收到用户的请求之后,先判断请求的url,根据url和locatioj进行匹配,检测请求的web文件是静态还是动态网站;
3、如果是静态html,nginx直接处理并响应给客户端;
4、如果是动态php(per、python),此时nginx不能直接处理,nginx会将请求发送给后端的php模块或者cgi,php解释器将动态网页解析为静态的html网页,然后返回给nginx,此时nginx再将解析后的html静态网页结果返回给客户。
无论请求的是静态网页还是动态网页,客户端收到的结果都是通过nginx响应得到结果
如果php检测到需要连接后端数据库的话,会通过php-mysql连接驱动连接后端的数据库读取和查询数据内容,读取之后再将动态网页解析为静态网页,nginx再将静态网页的内容返回给客户端

Fast CGI

CGI是什么?CGI是通用网关接口,是外部应用程序与Web服务器之间的接口标准,CGI是为了保证web
server传递过来的数据是标准格式的,方便cgi程序的编写者。
fast-CGI是nginx和php之间的一个通信接口,该接口实际处理过程通过启动php-fpm进程来解析php脚本,即php-fpm相当于一个动态应用服务器,从而实现nginx动态解析php。因此,如果nginx服务器需要支持php解析,需要在nginx.conf中增加php的配置;将php脚本转发到fast-CGI进程监听的IP地址和端口(php-fpm.conf中指定)。同时,php安装的时候,需要开启支持fast-CGI选项,并且编译安装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)可以工作。

PHP-CGI

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

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的持久连接,实现"连接池",避免重复建立连接,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值