首页
Linux教程
MongoDB教程
FTP教程
Apache教程
Nginx
jQuery
Redis
MySQL
PostgreSQL教程
PHP教程
Elasticsearch

PHP教程

目录
PHP教程

PHP-FPM


Nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。

Nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被Nginx。

以php-fpm为例介绍如何使Nginx支持PHP

一、编译安装php-fpm

    什么是PHP-FPM

    PHP-FPM是一个PHP FastCGI管理器,只适用于PHP。

    PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

    新版PHP已经集成php-fpm了,不再是第三方的包,推荐使用。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程,可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带–enable-fpm参数即可开启PHP-FPM。

    [root@iZm5e4blwrqoe0dh9gcyluZ /usr/local/src]# ./configure --prefix=/usr/local/php \
    --with-config-file-scan-dir=/etc/php.d \
    --with-apxs2=/jl/apache2/bin/apxs \
    --with-config-file-path=/etc \
    --with-pdo-mysql=mysqlnd \
    --enable-mbstring \
    --with-freetype-dir \
    --with-jpeg-dir \
    --with-png-dir \
    --with-zlib \
    --with-libxml-dir=/usr \
    --with-openssl \
    --enable-xml \
    --enable-sockets \
    --enable-fpm \
    --with-bz2 \
    --with-pgsql=shared \
    --with-pdo-pgsql=shared \
    --enable-mysqlnd \
    --with-mysqli=mysqlnd \
    --with-gd \
    --enable-session

    安装PHP时,加上上面红色字体的参数"–enable-fpm"。

二、启动php-fpm

    要启动php-fpm,必须找到"php-fpm"这个文件,然后运行它。

    [root@iZm5e9844shvuaar7ihzzfZ /root]#find / -name php-fpm

    上图红框就是我们要找的文件的目录。

    [root@iZm5e9844shvuaar7ihzzfZ /root]#cd /usr/local/php/sbin
    [root@iZm5e9844shvuaar7ihzzfZ /usr/local/php/sbin]#./php-fpm

    执行时出现报错。

    把文件"php-fpm.conf.default"拷贝过来就可以了。

    [root@iZm5e9844shvuaar7ihzzfZ /usr/local/php/sbin]#cd /usr/local/php/etc
    [root@iZm5e9844shvuaar7ihzzfZ /usr/local/php/etc]#cp php-fpm.conf.default php-fpm.conf

    继续执行php-fpm命令。

    [root@iZm5e9844shvuaar7ihzzfZ /usr/local/php/etc]#cd /usr/local/php/sbin
    [root@iZm5e9844shvuaar7ihzzfZ /usr/local/php/sbin]#./php-fpm

    又出现报错。

    拷贝"/usr/local/php/etc/php-fpm.d/"目录下文件就是了。

    [root@iZm5e9844shvuaar7ihzzfZ /usr/local/php/sbin]#cd /usr/local/php/etc/php-fpm.d
    [root@iZm5e9844shvuaar7ihzzfZ /usr/local/php/etc/php-fpm.d]#cp www.conf.default www.conf

    继续执行php-fpm命令。

    [root@iZm5e9844shvuaar7ihzzfZ /usr/local/php/etc/php-fpm.d]#cd /usr/local/php/sbin
    [root@iZm5e9844shvuaar7ihzzfZ /usr/local/php/sbin]#./php-fpm

    没有报错,成功执行。

    查看系统是不是有php-fpm的进程。

    [root@iZm5e9844shvuaar7ihzzfZ /usr/local/php/sbin]#ps -ef | grep php-fpm