博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php-fpm的安装和启动
阅读量:6273 次
发布时间:2019-06-22

本文共 4169 字,大约阅读时间需要 13 分钟。

在前面我学习过了php中的mod_php模式mode_fastcgi和php-fpm模式:,中大致的讲述了几种模式的区别,也明白了php-fpm是fastcgi模式的管理器。今天就来看下php如何安装php-fpm,以及运行。

安装 php-fpm

我的机器是centos 6.2 之前就已经安装过了php 5.4.11,PHP在 5.3.3 之后已经讲php-fpm写入php源码核心了。所以已经不需要另外下载了。我这里是5.4.11所以就可以直接用。

由于我php已经安装好了,而且之前编译的时候没有带上fpm模式,所以我必须找到源码重新编译一下:

要想使php支持php-fpm,只需要在编译的时候带上 --enable-fpm 就可以了。

所以,我需要找到之前的编译参数, 后面加上--enable-fpm ,重新编译下就可以了。之前就讲过,有2种方式可以找到之前的编译参数:

  1. 在源码 /lamp/php-5.4.11/中找到 config.nice,这个就是之前的编译参数
  2. 在php.ini配置文件中找到Configure相关的配置 : 
    /usr/local/php/bin/php -i |grep 'Configure'

好,我们开始,找到之前的编译参数:

 
  1. [root@localhost /]# cd /lamp/php-5.4.11 & vi config.nice
  2. './configure' \
  3. '--prefix=/usr/local/php' \
  4. '--with-config-file-path=/usr/local/php/etc/' \
  5. '--with-apxs2=/usr/local/apache/bin/apxs' \
  6. '--with-mysql=/usr/local/mysql/' \
  7. '--with-libxml-dir=/usr/local/libxml2/' \
  8. '--with-png-dir=/usr/local/libpng/' \
  9. '--with-jpeg-dir=/usr/local/jpeg8/' \
  10. '--with-freetype-dir=/usr/local/freetype/' \
  11. '--with-gd=/usr/local/gd/' \
  12. '--with-zlib-dir=/usr/local/zlib/' \
  13. '--with-mcrypt=/usr/local/libmcrypt/' \
  14. '--with-mysqli=/usr/local/mysql/bin/mysql_config' \
  15. '--enable-soap' \
  16. '--enable-mbstring=all' \
  17. '--enable-sockets' \

加上--enable-fpm后,重新编译:

 
  1. [root@localhost /]# cd /lamp/php-5.4.11
  2. [root@localhost php-5.4.11]# './configure' \
  3. '--prefix=/usr/local/php' \
  4. '--with-config-file-path=/usr/local/php/etc/' \
  5. '--with-apxs2=/usr/local/apache/bin/apxs' \
  6. '--with-mysql=/usr/local/mysql/' \
  7. '--with-libxml-dir=/usr/local/libxml2/' \
  8. '--with-png-dir=/usr/local/libpng/' \
  9. '--with-jpeg-dir=/usr/local/jpeg8/' \
  10. '--with-freetype-dir=/usr/local/freetype/' \
  11. '--with-gd=/usr/local/gd/' \
  12. '--with-zlib-dir=/usr/local/zlib/' \
  13. '--with-mcrypt=/usr/local/libmcrypt/' \
  14. '--with-mysqli=/usr/local/mysql/bin/mysql_config' \
  15. '--enable-soap' \
  16. '--enable-mbstring=all' \
  17. '--enable-sockets' \
  18. '--enable-fpm'
  19. [root@localhost php-5.4.11] make && make install

启动 php-fpm

安装完成之后,我们尝试着启动:

启动命令是:

/usr/local/php/sbin/php-fpm

报错了:

 
  1. [26-Feb-2015 15:39:55] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)
  2. [26-Feb-2015 15:39:55] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'
  3. [26-Feb-2015 15:39:55] ERROR: FPM initialization failed

错误信息说找不到 php-fpm.conf

哦,原来是php-fpm.conf还没有,我们到 /usr/local/php/etc目录下将php-fpm.conf.default拷贝也一份成php-fpm.conf

 
  1. cd /usr/local/php/etc/
  2. cp php-fpm.conf.default php-fpm.conf

编辑一下这个配置文件:

 
  1. vim php-fpm.conf
  2. pid = run/php-fpm.pid
  3. user = www
  4. group = www

再次尝试启动:

/usr/local/php/sbin/php-fpm

再次报错说www 用户不存在:

 
  1. [26-Feb-2015 15:57:38] ERROR: [pool www] cannot get uid for user 'www'
  2. [26-Feb-2015 15:57:38] ERROR: FPM initialization failed

好,那我们新建www 用户组:

 
  1. groupadd www
  2. useradd -g www www

再次启动:

/usr/local/php/sbin/php-fpm

没有任何的输出,表示成功了!!!

php-fpm占用的是9000端口,我们查看下进程:

 
  1. [root@localhost php-5.4.11]# ps -ef|grep php-fpm
  2. root 1377 1231 0 11:19 pts/1 00:00:00 grep php-fpm
  3. root 29249 1 0 06:22 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
  4. www 29250 29249 0 06:22 ? 00:00:00 php-fpm: pool www
  5. www 29251 29249 0 06:22 ? 00:00:00 php-fpm: pool www
  6. root 32132 6158 0 08:25 pts/2 00:00:00 vi php-fpm.conf
 
  1. [root@localhost php-5.4.11]# netstat -tnl | grep 9000
  2. tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
  3. [root@localhost php-5.4.11]#

好,安装和启动都OK了。

开机启动 php-fpm

之前接说过php-fpm是独立于web服务器和php之前的一层服务器,所以,我们需要开机启动它

开机启动的配置文件是:/etc/rc.local ,加入 /usr/local/php/sbin/php-fpm 即可

 
  1. [root@localhost init]# vi /etc/rc.local
  2. 1 #!/bin/sh
  3. 2 #
  4. 3 # This script will be executed *after* all the other init scripts.
  5. 4 # You can put your own initialization stuff in here if you don't
  6. 5 # want to do the full Sys V style init stuff.
  7. 6
  8. 7 touch /var/lock/subsys/local
  9. 8 /usr/local/apache/bin/apachectl start
  10. 9 /usr/local/bin/redis-server /etc/redis.conf
  11. 10 /usr/local/php/sbin/php-fpm

光安装好php-fpm也是没用的,得配合web服务器使用,下一节,我要学习nginx的安装,以及nginx连接php-fpm来使用php。

重启 php-fpm

我们在新安装扩展后,是需要重新php-fpm的,已使扩展生效。

最简单粗暴的重新php-fpm的方式是:

先找到php-fpm的进程号,kill 掉,再用/usr/local/php/sbin/php-fpm 这样启动。

其实还有更多温和的方法,就是使用信号

INT, TERM 立刻终止QUIT 平滑终止USR1 重新打开日志文件USR2 平滑重载所有worker进程并重新载入配置和二进制模块

示例:

php-fpm 关闭:

kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

php-fpm 重启:

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

转载地址:http://ulmpa.baihongyu.com/

你可能感兴趣的文章
Linux kernel scriptes bin2c "\x"
查看>>
当智能交通遇上大数据 智能交通不再是梦
查看>>
iOS开发 - Content hugging priority & Content compression resistance priority
查看>>
centos6下mysql的主从复制的配置
查看>>
Object-C--->Swift之(七)嵌套函数与闭包
查看>>
css继承样式怎么控制?用选择器
查看>>
Http和Https三次握手那些事
查看>>
WCF 添加 RESTful 支持,适用于 IIS、Winform、cmd 宿主
查看>>
105.4. Installing Ganglia on Centos
查看>>
Drupal 曝出代码执行高危漏洞,数百万网站受影响
查看>>
SAP MM 移动类型107和109之研究
查看>>
SAP MM 系统确定供应源优先级
查看>>
交货单打印时提示“没有输出被选择打印”
查看>>
UML在软件开发各个阶段的应用
查看>>
服务器硬件问题整理的一点总结
查看>>
MSSQL · 实现分析 · Extend Event实现审计日志对SQL Server性能影响
查看>>
互动报表 SAP ABAP
查看>>
11.10. loop devices
查看>>
菜鸟学算法--简单的交换和最大公约数算法入门篇
查看>>
SAP S/4HANA Cloud: Revolutionizing the Next Generation of Cloud ERP
查看>>