理解LNMP体系结构

内容主要参考自http://www.cnblogs.com/it-cen/p/4320261.html?comefrom=http://blogread.cn/news/,感谢原博主。

LNMP就是Linux+Nginx+MySQL+PHP,Linux作为服务器的操作系统,MySQL即为数据库。本文主要介绍PHP和Nginx的关系。

Nginx为一款高性能Web服务器,本身是不能处理PHP的,当接收到请求时,判断如果是PHP请求就会将请求交给PHP解释器处理,然后将结果返回给Client。Nginx一般把请求转发给fast-cgi管理进程处理,fast-cgi管理进程再选择cgi子进程处理请求,然后把结果返给Nginx。

初步认识Fast-CGI和Nginx+Fast-CGI

1.Apache+PHP 和 Nginx+PHP的区别

Apache一般是把PHP当做自己的一个模块来启动;而Ngnix则是把http请求变量转发给PHP进程,即PHP独立进程,与Ngnix通信,这种方式叫做Fast-CGI运行方式。所以Apache所编译的PHP不能用于Nginx。
Nginx+PHP的基本结构图如下:

2.什么是Fast-CGI

  Fast-CGI是一个可伸缩的、高速的在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持Fast-CGI,包括Apache、Nginx和lighttpd等。同时,Fast-CGI也被许多脚本语言支持,其中就有PHP。
  Fast-CGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后将结果返回给HTTP服务器。这在处理高并发访问时几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少使用了。
  FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给Fast-CGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。

后续还将会有php-fpm和fast-cgi之间的关系的解释。

3.Nginx+Fast-CGI运行原理

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

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

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

4.简述php-fpm

  PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,它其实是PHP源代码的一个补丁,旨在将Fast-CGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。新版的PHP已经集成了php-fpm,在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。

理解LNMP体系结构相关推荐

  1. mysql客户端工具_性能优化-理解 MySQL 体系结构(MySQL分库分表)

    实例和数据库 我们通常所说的 MySQL 数据库服务器由一个实例(instance)以及一个数据库(database)组成.实例包括一组后台进程/线程和许多内存结构,用于管理数据库:数据库由一组磁盘文 ...

  2. 面向程序员的GPGPU技术系列(1) 为什么要理解GPU体系结构?

    GPU的计算能力在电脑游戏和计算机视觉领域已经得到了充分的证明.本文的目的不在于介绍GPU的发展史和其在上述领域的应用,而是侧重于如何在通用计算领域发挥GPU强大的计算能力,即GPGPU(Genera ...

  3. 一文详细理解计算机网络体系结构(考试和面试必备)

    一. 计算机网络概述 1.1 计算机网络的概念 最简洁的定义\color{#0000FF}{最简洁的定义}最简洁的定义:计算机网络就是一些互连的,自治的计算机系统的集合. 广义观点的定义\color{ ...

  4. 软件体系结构的第3次实验(软件体系结构风格之应用 )

    一.实验目的 1.理解不同体系结构风格的具体内涵. 2.学习体系结构风格的具体实践. 二.实验环境 硬件: (依据具体情况填写) 软件:Java或任何一种自己熟悉的语言 三.实验内容 "上下 ...

  5. 【VS开发】PCIe体系结构的组成部件

    PCIe总线作为处理器系统的局部总线,其作用与PCI总线类似,主要目的是为了连接处理器系统中的外部设备,当然PCIe总线也可以连接其他处理器系统.在不同的处理器系统中,PCIe体系结构的实现方法略有不 ...

  6. 深入理解 JVM Class文件格式(十)

    到此, 所有关于class文件格式的重要内容都已经讲解完了, 不敢说面面俱到, 但是敢说大部分重要的内容都包含在内了.前前后后用了9篇博客来专门讲解class文件结构, 为什么花那么多的时间和精力来介 ...

  7. 计算机网络体系结构最有影响的标准,浅谈计算机网络中的体系结构

    夏杰 [摘 要]计算机网络是由各类具有独立功能的计算机系统和终端通过通信线路连接起来的复杂系统,网络中各计算机必须遵从通信规定才能相互协调工作.为了设计这样复杂的系统,网络工作者提出了分层实现计算机网 ...

  8. 微型计算机体系结构的主要特点,高性能微型计算机体系结构:奔腾、酷睿系列处理器原理与应用技术...

    高性能微型计算机体系结构:奔腾.酷睿系列处理器原理与应用技术 语音 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! <高性能微型计算机体系结 ...

  9. 【软件体系结构】考点整理

    一.填空题 1.软件元素包括 . . . . 甚至领域知识. 软件工程包括3个要素: . 和 . 软件重用过程中需要重用的开发组织结构予以支持,它包括:__.__.___三组成员组成. 采用层次式软件 ...

最新文章

  1. 8 时间转指定时区的时间_Linux指定的时间运行自定义命令的两种方式
  2. Python3压缩和解压缩实现
  3. Origin绘制大小和颜色可变的3D散点图
  4. show status和show variables区别解析
  5. k8s 手动恢复redis 集群_高工面试之:redis的几种集群方式你都熟悉吗?
  6. Spring Cloud 微服务入门(一)--初识分布式及其发展历程
  7. JavaScript Promise查缺补漏
  8. 林肯航海家使用android auto,汽车头条 - 林肯航海家/MKC瞄准了30万+的市场 它们的对手要慌了...
  9. C4D优质电商背景素材|分分钟搞定设计稿
  10. python基础自动化测试_Python自动化测试基础之HelloWorld
  11. linux下安装fortran90教程,linux 安装fortran 90 --zz
  12. 抖音文字旋转动画PR模板 Mogrt格式动态标题文字Pr模板免费下载
  13. 4G全网通模块 安卓 高通骁龙MSM8909核心板 开发板
  14. linux cpu 温度 代码,linux CPU温度
  15. UP主分析丨B站“肝视频”第一人,追剧的速度都跟不上他。
  16. 跟着老猫来搞GO-内建容器Map
  17. 用python解决选择困难症
  18. 招聘是一门学问,给求职者发了offer后,他说不来了
  19. 坐标移动c语言,C语言 坐标移动详解及实例代码
  20. 网站分布式技术有哪些?

热门文章

  1. 如何遏制PostgreSQL WAL的疯狂增长(转)
  2. 图片以二进制存入MYSQL
  3. matlab处理视频代码,Matlab视频处理心脏跳动。代码补充
  4. oracle数据库要如何登陆,登陆oracle数据库的方式
  5. 计算机视觉系列3.1 VGGNet中的数据预处理
  6. 系分 - 数学与经济管理
  7. 选择与循环:剪刀石头布_奔跑吧 | 月亮马戏——无限循环中的选择与坚持
  8. python boss直聘爬取2019-09
  9. 【服务器数据恢复】Raid阵列更换故障硬盘后数据同步失败的数据恢复案例
  10. 人脸识别系统FaceNet原理