Apache 配置mod_php、php-fpm

519次阅读
没有评论

传统的方式是使用Apache的mod_php。Mod_php将PHP 绑定到Apache自身,但是Apache对于该模块功能的管理工作非常糟糕。一旦遇到较大的流量, 就会遭受严重的内存问题。

配置加载mod_php模块后,其便是apahce进程本身一部分,每个新的apache子进程都会加载次模块,所以会导致一些不必要的内存资源浪费。 php-fpm是单独的一个进程,不存在多次加载到内存的情况,但需要解析php时才会消耗内存。

自apache 2.4.9以来,php-fpm协同apache一起工作所需要的配置没有以前那么复杂了.

重新编译php,和之前编译参数差不太多,只需要去掉“–with-apxs2=/usr/local/apache2/bin/apxs”,加入“–enable-fpm”:

./configure --prefix=${phpdir}  --exec-prefix=${phpdir}  --bindir=${phpdir}/bin --sbindir=${phpdir}/sbin --includedir=${phpdir}/include --libdir=${phpdir}/lib/php --mandir=${phpdir}/php/man  --with-config-file-path=${phpdir}/etc --with-mhash --with-openssl  --with-mysqli --with-pdo-mysql --with-gd --with-iconv --with-zlib --enable-zip --enable-inline-optimization  --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --without-gdbm

随后make、make install即可。为了让centos可以开机自动启动php-fpm,我们需要:

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod o+x /etc/init.d/php-fpm
chkconfig --add php-fpm

让php-fpm的配置文件生效:

mv /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

根据自己的需要修改这个conf文件

user = daemon
group = daemon
listen = /dev/shm/php-fpm.sock
listen.owner = daemon
listen.group = daemon
pm = static
pm.max_children = 4 ;见下面解释
pm.max_requests = 2048

mod_php配置

apache这边需要的一点设置。由于是从mod_php到php-fpm的,所以之前httpd.conf中的这几行需要注解掉:

LoadModule php5_module modules/libphp5.so
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

然后去掉mod_proxy.so和mod_proxy_fcgi.so之前的注解,确保他们被apache加载。

php-fpm配置

如果php-fpm使用的是TCP socket,那么在httpd.conf末尾加上:

<FilesMatch \.php$>
         SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

如果用的是unix socket,那么httpd.conf末尾加上:

<Proxy "unix:/dev/shm/php-fpm.sock|fcgi://php-fpm">
    ProxySet disablereuse=off
</Proxy>

<FilesMatch \.php$>
    SetHandler proxy:fcgi://php-fpm
</FilesMatch>

至此在apapche上配置php-fpm结束

Honest1y
版权声明:本站原创文章,由Honest1y2017-07-06发表,共计1981字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
载入中...