nginx本身不能处理php,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。
nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx
本文以php-fpm为例介绍如何使nginx支持php
一、编译安装php-fpm
什么是php-fpm
php-fpm是一个php fastcgi管理器,是只用于php的,可以在 http://php-fpm.org/download下载得到.
php-fpm其实是php源代码的一个补丁,旨在将fastcgi进程管理整合进php包中。必须将它patch到你的php源代码中,在编译安装php后才可以使用。
新版php已经集成php-fpm了,不再是第三方的包了,推荐使用。php-fpm提供了更好的php进程管理方式,可以有效控制内存和进程、可以平滑重载php配置,比spawn-fcgi具有更多有点,所以被php官方收录了。在./configure的时候带 –enable-fpm参数即可开启php-fpm,其它参数都是配置php的,具体选项含义可以查看这里。
安装前准备
centos下执行
yum -y install gcc automake autoconf libtool make?yum -y install gcc gcc-c++ glibc?yum -y install libmcrypt-devel mhash-devel libxslt-devel\?libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel\?zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel\?ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel\?krb5 krb5-devel libidn libidn-devel openssl openssl-devel
新版php-fpm安装(推荐安装方式)
wget http://cn2.php.net/distributions/php-5.4.7.tar.gztar zvxf php-5.4.7.tar.gzcd php-5.4.7./configure --prefix=/usr/local/php? --enable-fpm --with-mcrypt --with-zlib\?--enable-mbstring --disable-pdo --with-curl --disable-debug? --disable-rpath\?--enable-inline-optimization --with-bz2? --with-zlib --enable-sockets\?--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex\?--with-mhash --enable-zip --with-pcre-regex --with-mysql\?--with-gd --with-jpeg?make all
