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后才可以使用。
系统版本:centos7.0 x86_64
软件环境:已安装nginx
安装php-fpm依赖环境
yum -y install gcc gcc-c++ automake autoconf libtool make libmcrypt-devel mhash-devel mcrypt-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-devel libidn libidn-devel openssl openssl-devel
!!!Yum可能无法安装libmcrypt-devel mhash-devel mcrypt-devel可以使用源代码方式安装
编译安装php
tar zvxf php-5.4.7.tar.gz cd php-5.4.7 ./configure --prefix=/usr/local/php --enable-fpm
在nginx主配置文件中的http模块中插入下列内容
location ~ .php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
vim /var/www/html/index.php
<?php echo phpinfo(); ?>
依次开启php-fpm模块和nginxd服务
开启命令:
/usr/local/php/sbin/php-fpm
关闭命令:
killall -9 php-fpm
客户端访问php页面
本文借鉴: http://www.nginx.cn/231.html