天天看点

php-fpm的安装和启动 安装 php-fpm 启动 php-fpm 开机启动 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,只需要在编译的时候带上 <code>--enable-fpm</code> 就可以了。

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

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

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

<code>[root@localhost /]# cd /lamp/php-5.4.11 &amp; vi config.nice</code>

<code>'./configure' \</code>

<code>'--prefix=/usr/local/php' \</code>

<code>'--with-config-file-path=/usr/local/php/etc/' \</code>

<code>'--with-apxs2=/usr/local/apache/bin/apxs' \</code>

<code>'--with-mysql=/usr/local/mysql/' \</code>

<code>'--with-libxml-dir=/usr/local/libxml2/' \</code>

<code>'--with-png-dir=/usr/local/libpng/' \</code>

<code>'--with-jpeg-dir=/usr/local/jpeg8/' \</code>

<code>'--with-freetype-dir=/usr/local/freetype/' \</code>

<code>'--with-gd=/usr/local/gd/' \</code>

<code>'--with-zlib-dir=/usr/local/zlib/' \</code>

<code>'--with-mcrypt=/usr/local/libmcrypt/' \</code>

<code>'--with-mysqli=/usr/local/mysql/bin/mysql_config' \</code>

<code>'--enable-soap' \</code>

<code>'--enable-mbstring=all' \</code>

<code>'--enable-sockets' \</code>

加上<code>--enable-fpm</code>后,重新编译:

<code>[root@localhost /]# cd /lamp/php-5.4.11</code>

<code>[root@localhost php-5.4.11]# './configure' \</code>

<code>'--enable-fpm'</code>

<code>[root@localhost php-5.4.11] make &amp;&amp; make install</code>

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

启动命令是:

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

报错了:

<code>[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)</code>

<code>[26-feb-2015 15:39:55] error: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'</code>

<code>[26-feb-2015 15:39:55] error: fpm initialization failed</code>

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

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

<code>cd /usr/local/php/etc/</code>

<code>cp php-fpm.conf.default php-fpm.conf</code>

编辑一下这个配置文件:

<code>vim php-fpm.conf</code>

<code></code>

<code>pid = run/php-fpm.pid</code>

<code>user = www</code>

<code>group = www</code>

再次尝试启动:

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

<code>[26-feb-2015 15:57:38] error: [pool www] cannot get uid for user 'www'</code>

<code>[26-feb-2015 15:57:38] error: fpm initialization failed</code>

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

<code>groupadd www</code>

<code>useradd -g www www</code>

再次启动:

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

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

<code>[root@localhost php-5.4.11]# ps -ef|grep php-fpm</code>

<code>root 1377 1231 0 11:19 pts/1 00:00:00 grep php-fpm</code>

<code>root 29249 1 0 06:22 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)</code>

<code>www 29250 29249 0 06:22 ? 00:00:00 php-fpm: pool www</code>

<code>www 29251 29249 0 06:22 ? 00:00:00 php-fpm: pool www</code>

<code>root 32132 6158 0 08:25 pts/2 00:00:00 vi php-fpm.conf</code>

<code>[root@localhost php-5.4.11]# netstat -tnl | grep 9000</code>

<code>tcp 0 0 127.0.0.1:9000 0.0.0.0:* listen</code>

<code>[root@localhost php-5.4.11]#</code>

好,安装和启动都ok了。

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

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

<code>[root@localhost init]# vi /etc/rc.local</code>

<code>1 #!/bin/sh</code>

<code>2 #</code>

<code>3 # this script will be executed *after* all the other init scripts.</code>

<code>4 # you can put your own initialization stuff in here if you don't</code>

<code>5 # want to do the full sys v style init stuff.</code>

<code>6</code>

<code>7 touch /var/lock/subsys/local</code>

<code>8 /usr/local/apache/bin/apachectl start</code>

<code>9 /usr/local/bin/redis-server /etc/redis.conf</code>

<code>10 /usr/local/php/sbin/php-fpm</code>

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

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

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

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

其实还有更多温和的方法,就是使用<code>信号</code>。

示例:

php-fpm 关闭:

php-fpm 重启: