Nginx+PHP 5.2.1 3(FastCGI)环境的安装、配置与优化指南

风信网(ithov.com)原创文章:本篇将向大家介绍Nginx+PHP 5.2.1 3(FastCGI)环境的安装、配置与优化指南,涉及的内容包括:什么是FastCGI,Nginx+FastCGI运行原理,spawn-fcgi与PHP-FPM,PHP与PHP-FPM的安装及优化,酡置Nginx来支持PHP,测试Nginx对PHP的解析功能,优化Nginx中FastCGI参数的实例。通过以上七个方面的内容详解,能带你深入的了解到Nginx+PHP(FastCGI)中各参数功能的详细说明,好了,言归正传,让我们来学习这一章中的内容吧。

1、什么是FastCGI

&">nbsp;   FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等。同时,FastCGI也被许多脚本语言支持,其中就有PHP。

FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后将结果返回给HTTP服务器。这在处理高并发访问时几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少使用了。

FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了塾个应用系统的性能。

2、Nginx+FastCGI运行原理

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

3、spawn-fcgi与PHP-FPM

前面介绍过,FastCGI接口方式在脚本解析服务器上启动一个或者多个守护进程对动态脚本进行觯析,这些进程就是FastCGI进程管理器,或者称为FastCGI引擎。spawn-fcgi与PHP-FPM就是支持PHP的两个FastCGI进程管理器。

下面简单介绍spawn-fcgi与PHP-FPM的异同。

图1-3 Nginx+FastCGI运行过程

spawn-fcgi是HTTP服务器lighttpd的一部分,目前已经独立成为一个项目,一般与lighttpd配合使用来支持PHP。但是ligttpd的spwan-fcgi在高并发访问的时候,会出现内存泄漏甚至自动重启FastCGI的问题。

Nginx是个轻量级的HTTP server,必须借助第三方的FastCGI处理器才可以对PHP进行解析,因此Nginx+spawn-fcgi的组合也可以实现对PHP的解析,这里不过多讲述。

PHP-FPM也是一个第三方的FastCGI进程管理器,它是作为PHP的一个补丁来开发的,在安装的时候也需要和PHP源码一起编译,也就是说PHP-FPM被编译到PHP内核中,因此在处理性能方面更加优秀。同时PHP-FPM在处理高并发方面也比spawn-fcgi引擎好很多,因此,推荐使用Nginx+PHP/PHP-FPM这个组合对PHP进行解析。

FastCGI的主要优点是把动态语言和HTTP Server分离开来,所以Nginx与PHP/PHP-FPM经常被部署在不同的服务器上,以分担前端Nginx服务器的压力,使Nginx专一处理静态请求和转发动态请求,而PHP/PHP-FPM服务器专一解析PHP动态请求。

时间: 2024-09-30 17:05:20

Nginx+PHP 5.2.1 3(FastCGI)环境的安装、配置与优化指南的相关文章

Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 详细图文讲解

android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把环境搭建起来了,把过程记录下来分享给大家. 内容目录: 1.默认基础环境 2.NDK下载与配置 3.安装Cygwin 4.用NDK编译 5.安装CDT插件 6.安装Sequoyah插件 7.JNI编译环境配置 画了一个思维导图让大家一目了然配置过程   -------------------------

ubuntu14.04环境下安装配置caffe,最后编译caffe时出错

问题描述 ubuntu14.04环境下安装配置caffe,最后编译caffe时出错 我按照http://www.linuxdiyf.com/linux/13008.html 这篇博客配置caffe,前面都没有问题, 但是到这一步之后, 出现了问题,问题如下 ![, 提示的是这个 make: *** [.build_release/src/caffe/layer_factory.o] 错误 1 make: *** 正在等待未完成的任务.... 我本人不太懂,请问怎么处理啊,急.. 谢谢各位 解决方

Nginx+PHP(FastCGI)+MySQL在小内存VPS(t1.micro)上的安装配置与优化

背景介绍: 以前,因为AWS EC2的价格比较昂贵而租用了其它国外小厂商的VPS,在使用了3年多之后,发现AWS EC2的价格居然比现在正在使用的VPS要便宜很多. 全球线路与速度最理想的日本节点的t1.micro型号,选择3年长期合约的价格在2500元人民币左右,一年下来也不到900元,所以就打算将Blog迁移到AWS EC2上. 之前在部署VPS环境的时候,基本上是完整的参考了张宴的两篇文档,包括操作系统的选择也是相同的. 但这一次我想采用目前较新的CentOS 6.4 minimal x8

lnmp环境安装配置后优化方法小结

Lnmp配置优化 一. 基于xen架构的可以增加swap分区大小我的vps是openVZ的,swap分区是不能随意更改的.PS.主机商已经提供了128M的swap了.满足了!  代码如下 复制代码  cd /var/ dd if=/dev/zero of=swapfile bs=1024 count=262144 /sbin/mkswap swapfile /sbin/swapon swapfile 然后让自己做的swap分区在系统启动时自动加载:  代码如下 复制代码 vi /etc/fsta

CentOS 6.4单机环境下安装配置Storm

Storm是一个分布式的.高容错的实时计算系统,在实时性要求比较强的应用场景下,可以用它来处理海量数据.我们尝试着搭建Storm平台,来实现实时计算.下面,我们在CentOS 6.4上安装配置Storm系统. 安装配置 安装配置过程,按照如下步骤进行: 1.安装配置sunjdk 下载sunjdk,并安装Java运行环境: 1 wget http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin 2 chmod +

tomcat以及tomcat环境变量安装配置方法教程_Tomcat

我们下载安装了tomcat,那么tomcat环境变量配置怎么配置?下面小编就和大家分享下tomcat环境变量的配置. tomcat安装版本 1.JDK:版本为jdk-7-windows-i586.exe    下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html2.tomcat:版本为apache-tomcat-7.0.33-windows-x86.zip    下载地址http://tomcat.apach

Ubuntu Server+Nginx+Mysql+Php5.3+Zend Guard Loader+eAccelerator+PhpMyAdmin安装配置详解

把我架设lnmp网站的过程写出来,希望对想架设网站的朋友有所帮助,如有更好的办法请提出来.之所以用nginx没用apache,是因为nginx的效率更高一些,尤其是对一些低配置的服务器,比如我在单位256M内存的旧机器上架设的服务器. 1.安装ubuntu server 10.04或10.10 其中安装语言选的en,时区shanghai,服务只安装ssh,其他全部用默认就行.提示:以上安装过程完成后,建议用其他计算机登录服务器,windows系统可以用putty,linux系统直接在终端用命令就

如何在Portal环境中安装配置IBM Business Process Manager小部件

这允许您在单个 Web 门户页面中构建统一的 portlet 和小部件环境,从而在门户页面中运行 BPM 流程和任务. IBM Business Process Manager http://www.aliyun.com/zixun/aggregation/3415.html">Advanced V7.5 包含 WebSphere V7.5 提供的 Business Space(将来也会包含 Business Space),为跨 IBM Business Process Managemen

在阿里云的CentOS环境中安装配置MySQL的教程_Mysql

1 常规错误的yum安装方法: 在前文中记述了CentOS 6.5系统中通过yum方式快速地搭建了LNMP环境,那么是否也能在CentOS 7或CentOS 7.1系统中依葫芦画瓢安装MySql5.6.24呢?答案是否定的. [root@typecodes ~]# yum -y install mysql mysql-server mysql-devel ...................... ....省略部分安装过程.... ...................... Installe