Home >Backend Development >PHP Tutorial >六、配置PHP-FPM

六、配置PHP-FPM

WBOY
WBOYOriginal
2016-06-23 13:10:141097browse

六、配置PHP-FPM

5.1 简介:

PHP-FPM(FastCGIProcess Manager:FastCGI进程管理器)

PHP-FPM是一个PHPFastCGI管理器,是只用于PHP的。它提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带�enable-fpm参数即可开启PHP-FPM。

使用PHP-FPM来控制PHP-CGI的FastCGI进程

/usr/local/php/sbin/php-fpm{start|stop|quit|restart|reload|logrotate}

--start 启动php的fastcgi进程

--stop 强制终止php的fastcgi进程

--quit 平滑终止php的fastcgi进程

--restart 重启php的fastcgi进程

--reload 重新平滑加载php的php.ini

--logrotate 重新启用log文件

 

5.2 配置php-fpm:

 

2.1为php-fpm提供SysV init脚本,并将其添加至服务列表:

[root@web tool]# cd php-5.5.34[root@web php-5.5.34]# cpsapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm[root@web php-5.5.34]# chmod +x/etc/rc.d/init.d/php-fpm[root@web php-5.5.34]# chkconfig --addphp-fpm[root@webphp-5.5.34]# chkconfig php-fpm on

2.2为php-fpm提供配置文件:

[root@webphp-5.5.34] # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

2.3编辑php-fpm的配置文件:

[root@webphp-5.5.34] # vim /usr/local/php/etc/php-fpm.conf配置fpm的相关选项为你所需要的值,默认会启用pid文件:pm.max_children = 50pm.start_servers = 5pm.min_spare_servers = 2pm.max_spare_servers= 8

2.4接下来就可以启动php-fpm了:

[root@web php-5.5.34]# service php-fpm startStarting php-fpm  done说明:php-fpm 可用参数start|stop|force-quit|restart|reload|status

2.5为了方便使用,可以将 PHP 命令添加到环境变量

[root@web php-5.5.34]# vim ~/.bash_profile # .bash_profile # Get the aliases and functionsif [ -f ~/.bashrc ]; then       . ~/.bashrcfi # User specific environment and startupprograms#将PATH=$PATH:$HOME/bin 改为:PATH=$PATH:$HOME/bin:/usr/local/php/binPATH=$PATH:$HOME/bin:/usr/local/php/bin export PATH 保存退出!
使 PHP 环境变量生效:[root@webphp-5.5.34]# . ~/.bash_profile
查看看 PHP 版本[root@web php-5.5.34]# php -vPHP 5.5.34 (cli) (built: Apr  7 2016 11:22:13)Copyright (c) 1997-2015 The PHP GroupZend Engine v2.5.0, Copyright (c) 1998-2015Zend Technologies   with XCache v3.1.2, Copyright (c) 2005-2014, by mOo    with XCache Cacher v3.1.2, Copyright (c)2005-2014, by mOo

5.3 检验:

使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):

[root@web php]# psaux | grep php-fpmroot      54722 0.0  0.3 175728  5932 ?       Ss   20:19   0:00 php-fpm: master process(/usr/local/php/etc/php-fpm.conf)                                                                   www       54723 0.0  0.2 175728  5144 ?       S    20:19   0:00 php-fpm: pool www                                                                                                           www       54724 0.0  0.2 175728  5144 ?       S    20:19   0:00 php-fpm: pool www                                                                                                            www       54725 0.0  0.2 175728  5144 ?       S    20:19   0:00 php-fpm: pool www                                                                                                           www       54726 0.0  0.2 175728  5144 ?       S    20:19   0:00 php-fpm: pool www                                                                                                           www       54727 0.0  0.2 175728  5144 ?       S    20:19   0:00 php-fpm: pool www                                                                                                           root      54837 0.0  0.0 103308   852 pts/1   S+   20:22   0:00 grep php-fpm

默认情况下,fpm监听在127.0.0.1的9000端口,也可以使用如下命令验正其是否已经监听在相应的套接字。

[root@web php-5.5.34]#netstat -tnlp | grep php-fpmtcp        0     0 127.0.0.1:9000             0.0.0.0:*                   LISTEN      54722/php-fpm

5.4启用httpd的相关模块

 

在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载

[root@web php-5.5.34]# vim/etc/httpd24/httpd.conf 115 LoadModule proxy_module modules/mod_proxy.so119 LoadModule proxy_fcgi_modulemodules/mod_proxy_fcgi.so

然后重新加载httpd服务:

[root@web php-5.5.34]# service httpd reload

5.5 配置虚拟主机支持使用fcgi

 

1.更改httpd-vhosts.conf配置在相应的虚拟主机中添加类似如下两行。

ProxyRequests Off

ProxyPassMatch^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

[root@web extra]# vim httpd-vhosts.conf<VirtualHost *:80>   ServerAdmin webmaster@dummy-host.example.com   DocumentRoot "/usr/local/apache/htdocs/www/"   ServerName www.52linux.com    ProxyRequests Off    ProxyPassMatch ^/(.*\.php)$fcgi://127.0.0.1:9000/usr/local/apache/htdocs/www/$1   ErrorLog "logs/www_error_log"   CustomLog "logs/www_access_log" common</VirtualHost> <VirtualHost *:80>   ServerAdmin webmaster@dummy-host2.example.com   DocumentRoot "/usr/local/apache/htdocs/blog/"   ServerName  blog.52linux.com    ProxyRequests Off    ProxyPassMatch ^/(.*\.php)$fcgi://127.0.0.1:9000/usr/local/apache/htdocs/blog/$1   ErrorLog "logs/blog_error_log"   CustomLog "logs/blog_access_log" common</VirtualHost> <VirtualHost *:80>   ServerAdmin webmaster@dummy-host2.example.com    DocumentRoot"/usr/local/apache/htdocs/bbs/"   ServerName bbs.52linux.com    ProxyRequests Off    ProxyPassMatch ^/(.*\.php)$fcgi://127.0.0.1:9000/usr/local/apache/htdocs/bbs/$1   ErrorLog "logs/bbs_error_log"   CustomLog "logs/bbs_access_log"   comomn</VirtualHost>

ProxyRequests Off:关闭正向代理

ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

 

2.编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页

[root@web extra]# vim/etc/httpd24/httpd.conf# 1添加如下二行:388     AddTypeapplication/x-httpd-php  .php389    AddType application/x-httpd-php-source .phps
# 2 定位至DirectoryIndexindex.html 修改为:257 <IfModule dir_module>258     DirectoryIndex index.phpindex.html259 </IfModule>

补充:Apache httpd 2.4以前的版本中,要么把PHP作为Apache的模块运行,要么添加一个第三方模块支持PHP-FPM实现。


下一篇:七、phpmyadmin安装

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn