Maison  >  Article  >  php教程  >  在CentOS上把PHP从5.4升级到5.5

在CentOS上把PHP从5.4升级到5.5

WBOY
WBOYoriginal
2016-06-06 19:44:151069parcourir

在CentOS上把PHP从5.4升级到5.5 摘要:本文记录了在CentOS 6.3上,把PHP从5.4.8升级到5.5.13的过程。 1. 概述 在我做的一个项目中,最近我对生产服务器上的一系列系统软件进行了升级,包括Git、Nginx、MySQL和PHP。这篇文章讲的是升级PHP的过程,其他软件的

在CentOS上把PHP从5.4升级到5.5

摘要:本文记录了在CentOS 6.3上,把PHP从5.4.8升级到5.5.13的过程。

1. 概述

在我做的一个项目中,最近我对生产服务器上的一系列系统软件进行了升级,包括Git、Nginx、MySQL和PHP。这篇文章讲的是升级PHP的过程,其他软件的升级,可见下面列出的文章。

  • 在CentOS上把Git从1.7.1升级到1.7.12.4
  • 在CentOS上把Nginx从1.2.4升级到1.6.0
  • 在CentOS上把MySQL从5.5升级到5.6
  • 在CentOS上把PHP从5.4升级到5.5 (本文)

在我加入这个项目之前,服务器上的PHP已经安装设置好了,我只是正常使用而已。现在过去1年了,所有的开发工作都告一段落,有时间升级服务器上的软件了。升级这种事情是应当经常做的,倒不是为了追最新版本,而是当正式版本发放出来的时候,应该及时更新, 以便获得最新的更正、补丁,避免服务器上的漏洞,减少安全隐患。

升级是在今年6月13-14日进行的,到今天才有空做个记录,便于日后参考。

2. 计划

计划就是预案,就是事先的准备(包括心理上的)、更明细的步骤、对各种情况及对意外的对策,当然,我们不可能面面俱到,预测一切,不然就成神了,所以要随时准备脱稿演出,think out of the box。

2.1 了解情况

计划要有针对性,所以要先”踩点儿“。

通过在系统上,用find之类的命令,或者通过网页用phpinfo()函数来显示关于PHP的信息,可以找到PHP安装在/usr/local/php目录下。这说明PHP是从源代码编译安装的,因为yum和rpm是不会安装到/usr/local/php这个路径的。在QQ群友的提示下,找到PHP 5.4.8的源代码位于/usr/local/src/php-5.4.8目录中,进一步确认PHP是从源代码编译安装的。

查看PHP版本:

# /usr/local/php/bin/php -<span>v
PHP </span><span>5.4</span>.<span>8</span> (cli) (built: Nov <span>13</span> <span>2012</span> <span>00</span>:<span>08</span>:<span>08</span><span>)
Copyright (c) </span><span>1997</span>-<span>2012</span><span> The PHP Group
Zend Engine v2.</span><span>4.0</span>, Copyright (c) <span>1998</span>-<span>2012</span> Zend Tehnologies

再查看PHP-FPM的运行情况。那两天看文档,我才知道有PHP-FPM(FastCGI Process Manager)这么个东西,在5.4之后已经包括在PHP之中了,详见参考资料[]13][14]。

查看PHP-FPM使用的端口:

# netstat -ntpul | <span>grep</span> php-<span>fpm
tcp        </span><span>0</span>      <span>0</span> <span>127.0</span>.<span>0.1</span>:<span>9000</span>              <span>0.0</span>.<span>0.0</span>:*                   LISTEN      <span>2881</span>/php-fpm

查看PHP-FPM的进程:

# <span>ps</span> aux | <span>grep</span> php-<span>fpm
USER       PID </span>%CPU %<span>MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      </span><span>2881</span>  <span>0.0</span>  <span>0.2</span> <span>204172</span>  <span>2064</span> ?        Ss    <span>2013</span>  <span>38</span>:<span>09</span> php-fpm: master process (/usr/local/php/etc/php-<span>fpm.conf)
www      </span><span>18982</span>  <span>0.0</span>  <span>1.4</span> <span>212796</span> <span>14816</span> ?        S    <span>19</span>:<span>12</span>   <span>0</span>:<span>03</span> php-<span>fpm: pool www
www      </span><span>18983</span>  <span>0.0</span>  <span>1.4</span> <span>211996</span> <span>14572</span> ?        S    <span>19</span>:<span>13</span>   <span>0</span>:<span>03</span> php-<span>fpm: pool www
www      </span><span>18984</span>  <span>0.0</span>  <span>1.4</span> <span>212276</span> <span>14876</span> ?        S    <span>19</span>:<span>13</span>   <span>0</span>:<span>03</span> php-<span>fpm: pool www
root     </span><span>19144</span>  <span>0.0</span>  <span>0.0</span> <span>103236</span>   <span>864</span> pts/<span>0</span>    S+   <span>23</span>:<span>29</span>   <span>0</span>:<span>00</span> <span>grep</span> php-fpm

查看PHP-FPM的版本:

# /usr/local/php/sbin/php-fpm -<span>v
PHP </span><span>5.4</span>.<span>8</span> (fpm-fcgi) (built: Nov <span>13</span> <span>2012</span> <span>00</span>:<span>15</span>:<span>58</span><span>)
Copyright (c) </span><span>1997</span>-<span>2012</span><span> The PHP Group
Zend Engine v2.</span><span>4.0</span>, Copyright (c) <span>1998</span>-<span>2012</span> Zend Technologies

查看上次系统启动的时间,这是怕安装的东西没重启而没有生效:

# <span>who</span> -<span>b
         system boot  </span><span>2013</span>-<span>01</span>-<span>04</span> <span>01</span>:<span>07</span><span>
# </span><span>last</span><span> reboot
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>279.14</span>.<span>1</span>. Fri Jan  <span>4</span> <span>01</span>:<span>07</span> - <span>20</span>:<span>36</span> (<span>526</span>+<span>19</span>:<span>29</span><span>)
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>220.13</span>.<span>1</span>. Mon Nov <span>12</span> <span>17</span>:<span>53</span> - <span>20</span>:<span>36</span> (<span>579</span>+<span>02</span>:<span>42</span><span>)
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>220.13</span>.<span>1</span>. Thu May <span>10</span> <span>17</span>:<span>12</span> - <span>17</span>:<span>13</span>  (<span>00</span>:<span>01</span><span>)
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>220.13</span>.<span>1</span>. Wed May  <span>9</span> <span>15</span>:<span>31</span> - <span>15</span>:<span>36</span>  (<span>00</span>:<span>04</span><span>)
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>220.13</span>.<span>1</span>. Wed May  <span>9</span> <span>15</span>:<span>03</span> - <span>15</span>:<span>29</span>  (<span>00</span>:<span>26</span><span>)
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>220.13</span>.<span>1</span>. Wed May  <span>9</span> <span>10</span>:<span>09</span> - <span>12</span>:<span>26</span>  (<span>02</span>:<span>16</span><span>)
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>220.13</span>.<span>1</span>. Thu May  <span>3</span> <span>17</span>:<span>23</span> - <span>17</span>:<span>25</span>  (<span>00</span>:<span>02</span><span>)
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>220.13</span>.<span>1</span>. Fri May  <span>4</span> <span>01</span>:<span>17</span> - <span>17</span>:<span>22</span>  (-<span>7</span>:-<span>54</span><span>)
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>220.13</span>.<span>1</span>. Fri Apr <span>20</span> <span>21</span>:<span>33</span> - <span>17</span>:<span>22</span> (<span>12</span>+<span>19</span>:<span>48</span><span>)
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>220.13</span>.<span>1</span>. Sat Apr <span>21</span> <span>03</span>:<span>39</span> - <span>17</span>:<span>22</span> (<span>12</span>+<span>13</span>:<span>42</span><span>)
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>220.13</span>.<span>1</span>. Fri Apr <span>20</span> <span>18</span>:<span>02</span> - <span>17</span>:<span>22</span> (<span>12</span>+<span>23</span>:<span>19</span><span>)
reboot   system boot  </span><span>2.6</span>.<span>32</span>-<span>220.13</span>.<span>1</span>. Thu Apr <span>19</span> <span>19</span>:<span>51</span> - <span>17</span>:<span>59</span>  (<span>22</span>:<span>07</span>)

其实这种担心是多余的,因为Linux和Windows不一样,基本上新安装的东西,都有命令行可以重启,只要你知道相应的命令行,不需要重启整个系统。

小结,现有的PHP 5.4.8安装在/usr/local/php目录下,是编译安装的,源代码位于/usr/local/src/php-5.4.8目录中。编译安装的好处是,可以自己定制,增减PHP扩展等等。建议,如无必要,不要使用编译安装,因为这样的安装,操作麻烦,对操作者的要求比较高,又无法利用yum和rpm这样的工具,不便于升级、卸载。

这也是为什么我用yum update php命令无法直接升级PHP的原因,因为yum或者rpm根本不知道用源代码编译安装的PHP。下面是我尝试的结果:

# <span>yum</span><span> update php
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 </span>* base: mirrors.<span>163</span><span>.com
 </span>*<span> epel: mirrors.hust.edu.cn
 </span>* extras: mirrors.<span>163</span><span>.com
 </span>*<span> remi: mirrors.hustunique.com
 </span>* remi-<span>php55: mirrors.hustunique.com
 </span>* updates: mirrors.<span>163</span><span>.com
Setting up Update Process
Package(s) php available, but not installed.
No Packages marked </span><span>for</span> Update

可见,yum没有找到已经安装的php包,所以没什么可以升级的。孤独的编译安装,没人待见,看来要在角落里终老一生了。

2.2 确定计划

经过在几个CakePHP、PHP相关的QQ群里,向其他朋友的请教和讨论,(此处略去15000字),其实这是和上面的”踩点儿“互相掺杂在一起进行的。在这里要特别感谢CakePHP群中的Christian和严谨的PHP HHVM MySQL群中的Linux 管理员(Freax)两位朋友。最终在朋友们的帮助下形成了下面的计划要点:

  • 保留原有编译安装的PHP 5.4.8,没必要去动它,不用就是了
  • 用yum安装PHP 5.5.13,配置PHP-FPM 5.5.13使用另一个端口(比如9001)
  • 修改Nginx的配置,使用在新端口上的PHP-FPM 5.5.13
  • 如何重启PHP-FPM?
    答:php-fpm在5.4以后默认是二进制文件了,不再用service php-fpm start这种启动了。可以在/etc/rc.local (link to /etc/rc.d/rc.local) 加上这条命令

前期的调研、计划,花了差不多2天时间,而之后的安装、配置,也就用了3-4个小时。

3. 安装、配置PHP 5.5.13

根据这两天读的文档,确定使用remi安装库,使用yum来安装PHP 5.5.13。

3.1 添加remi安装库

下面的操作依据参考资料[4]:

# <span>wget</span> http:<span>//</span><span>dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm</span>
# <span>wget</span> http:<span>//</span><span>rpms.famillecollet.com/enterprise/remi-release-6.rpm</span>
# rpm -Uvh remi-release-<span>6</span>*.rpm epel-release-<span>6</span>*.rpm

3.2 用yum安装PHP 5.5.13

从之前PHP 5.4.8下phpinfo()的输出,知道了旧的PHP 5.4.8上安装的PHP扩展,这样确定了下面需要安装的包(命令yum install之后的参数):

# <span>yum</span> <span>install</span> php php-fpm php-gd php-mysqlnd php-mcrypt php-mbstring php-<span>pdo
Dependencies Resolved

</span>================================================================================<span>
 Package                Arch      Version                   Repository     Size
</span>================================================================================<span>
Installing:
 libjpeg</span>-turbo          x86_64    <span>1.2</span>.<span>1</span>-<span>3</span>.el6_5             updates       <span>174</span><span> k
     replacing  libjpeg.x86_64 6b</span>-<span>46</span><span>.el6
 libjpeg</span>-turbo-devel    x86_64    <span>1.2</span>.<span>1</span>-<span>3</span>.el6_5             updates        <span>96</span><span> k
     replacing  libjpeg</span>-devel.x86_64 6b-<span>46</span><span>.el6
 php                    x86_64    </span><span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi         remi-php55    <span>2.6</span><span> M
 php</span>-fpm                x86_64    <span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi         remi-php55    <span>1.3</span><span> M
 php</span>-gd                 x86_64    <span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi         remi-php55     <span>69</span><span> k
 php</span>-mbstring           x86_64    <span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi         remi-php55    <span>958</span><span> k
 php</span>-mcrypt             x86_64    <span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi         remi-php55     <span>40</span><span> k
 php</span>-mysqlnd            x86_64    <span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi         remi-php55    <span>261</span><span> k
 php</span>-pdo                x86_64    <span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi         remi-php55    <span>109</span><span> k
Installing </span><span>for</span><span> dependencies:
 apr</span>-util-ldap          x86_64    <span>1.3</span>.<span>9</span>-<span>3</span>.el6_0.<span>1</span>           base           <span>15</span><span> k
 fontconfig             x86_64    </span><span>2.8</span>.<span>0</span>-<span>3</span>.el6               base          <span>186</span><span> k
 gd</span>-<span>last</span>                x86_64    <span>2.1</span>.<span>0</span>-<span>2</span>.el6.remi          remi          <span>129</span><span> k
 httpd                  x86_64    </span><span>2.2</span>.<span>15</span>-<span>30</span>.el6.centos      updates       <span>821</span><span> k
 httpd</span>-tools            x86_64    <span>2.2</span>.<span>15</span>-<span>30</span>.el6.centos      updates        <span>73</span><span> k
 libX11                 x86_64    </span><span>1.5</span>.<span>0</span>-<span>4</span>.el6               base          <span>584</span><span> k
 libX11</span>-common          noarch    <span>1.5</span>.<span>0</span>-<span>4</span>.el6               base          <span>192</span><span> k
 libXau                 x86_64    </span><span>1.0</span>.<span>6</span>-<span>4</span>.el6               base           <span>24</span><span> k
 libXpm                 x86_64    </span><span>3.5</span>.<span>10</span>-<span>2</span>.el6              base           <span>51</span><span> k
 libmcrypt              x86_64    </span><span>2.5</span>.<span>8</span>-<span>9</span>.el6               epel           <span>96</span><span> k
 libtiff                x86_64    </span><span>3.9</span>.<span>4</span>-<span>10</span>.el6_5            updates       <span>343</span><span> k
 libxcb                 x86_64    </span><span>1.8</span>.<span>1</span>-<span>1</span>.el6               base          <span>110</span><span> k
 libxslt                x86_64    </span><span>1.1</span>.<span>26</span>-<span>2</span>.el6_3.<span>1</span>          base          <span>452</span><span> k
 mailcap                noarch    </span><span>2.1</span>.<span>31</span>-<span>2</span>.el6              base           <span>27</span><span> k
 php</span>-cli                x86_64    <span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi         remi-php55    <span>2.5</span><span> M
 php</span>-common             x86_64    <span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi         remi-php55    <span>1.0</span><span> M
 php</span>-pear               noarch    <span>1</span>:<span>1.9</span>.<span>4</span>-<span>28</span>.el6.remi       remi          <span>373</span><span> k
 php</span>-pecl-jsonc         x86_64    <span>1.3</span>.<span>5</span>-<span>1</span>.el6.remi.<span>5.5</span>      remi-php55     <span>46</span><span> k
 php</span>-pecl-<span>zip</span>           x86_64    <span>1.12</span>.<span>4</span>-<span>1</span>.el6.remi.<span>5.5</span>     remi-php55    <span>269</span><span> k
 php</span>-process            x86_64    <span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi         remi-php55     <span>54</span><span> k
 php</span>-xml                x86_64    <span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi         remi-php55    <span>206</span><span> k
 t1lib                  x86_64    </span><span>5.1</span>.<span>2</span>-<span>6</span>.el6_2.<span>1</span>           base          <span>160</span><span> k

Transaction Summary
</span>================================================================================<span>
Install      </span><span>31</span> Package(s)

yum自动计算出需要的依赖安装包,总共有31个安装包需要下载、安装。

下面询问是否继续下载,回答y,并按回车即可继续:

Total download size: <span>13</span><span> M
Is this ok [y</span>/<span>N]: y
Downloading Packages:
(</span><span>1</span>/<span>31</span>): apr-util-ldap-<span>1.3</span>.<span>9</span>-<span>3</span>.el6_0.<span>1</span>.x86_64.rpm         |  <span>15</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>2</span>/<span>31</span>): fontconfig-<span>2.8</span>.<span>0</span>-<span>3</span>.el6.x86_64.rpm                | <span>186</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>3</span>/<span>31</span>): gd-<span>last</span>-<span>2.1</span>.<span>0</span>-<span>2</span>.el6.remi.x86_64.rpm              | <span>129</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>4</span>/<span>31</span>): httpd-<span>2.2</span>.<span>15</span>-<span>30</span>.el6.centos.x86_64.rpm            | <span>821</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>5</span>/<span>31</span>): httpd-tools-<span>2.2</span>.<span>15</span>-<span>30</span>.el6.centos.x86_64.rpm      |  <span>73</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>6</span>/<span>31</span>): libX11-<span>1.5</span>.<span>0</span>-<span>4</span>.el6.x86_64.rpm                    | <span>584</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>7</span>/<span>31</span>): libX11-common-<span>1.5</span>.<span>0</span>-<span>4</span>.el6.noarch.rpm             | <span>192</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>8</span>/<span>31</span>): libXau-<span>1.0</span>.<span>6</span>-<span>4</span>.el6.x86_64.rpm                    |  <span>24</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>9</span>/<span>31</span>): libXpm-<span>3.5</span>.<span>10</span>-<span>2</span>.el6.x86_64.rpm                   |  <span>51</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>10</span>/<span>31</span>): libjpeg-turbo-<span>1.2</span>.<span>1</span>-<span>3</span>.el6_5.x86_64.rpm          | <span>174</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>11</span>/<span>31</span>): libjpeg-turbo-devel-<span>1.2</span>.<span>1</span>-<span>3</span>.el6_5.x86_64.rpm    |  <span>96</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>12</span>/<span>31</span>): libmcrypt-<span>2.5</span>.<span>8</span>-<span>9</span>.el6.x86_64.rpm                |  <span>96</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>13</span>/<span>31</span>): libtiff-<span>3.9</span>.<span>4</span>-<span>10</span>.el6_5.x86_64.rpm               | <span>343</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>14</span>/<span>31</span>): libxcb-<span>1.8</span>.<span>1</span>-<span>1</span>.el6.x86_64.rpm                   | <span>110</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>15</span>/<span>31</span>): libxslt-<span>1.1</span>.<span>26</span>-<span>2</span>.el6_3.<span>1</span>.x86_64.rpm             | <span>452</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>16</span>/<span>31</span>): mailcap-<span>2.1</span>.<span>31</span>-<span>2</span>.el6.noarch.rpm                 |  <span>27</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>17</span>/<span>31</span>): php-<span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi.x86_64.rpm                | <span>2.6</span> MB     <span>00</span>:<span>00</span><span>
(</span><span>18</span>/<span>31</span>): php-cli-<span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi.x86_64.rpm            | <span>2.5</span> MB     <span>00</span>:<span>00</span><span>
(</span><span>19</span>/<span>31</span>): php-common-<span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi.x86_64.rpm         | <span>1.0</span> MB     <span>00</span>:<span>00</span><span>
(</span><span>20</span>/<span>31</span>): php-fpm-<span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi.x86_64.rpm            | <span>1.3</span> MB     <span>00</span>:<span>00</span><span>
(</span><span>21</span>/<span>31</span>): php-gd-<span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi.x86_64.rpm             |  <span>69</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>22</span>/<span>31</span>): php-mbstring-<span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi.x86_64.rpm       | <span>958</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>23</span>/<span>31</span>): php-mcrypt-<span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi.x86_64.rpm         |  <span>40</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>24</span>/<span>31</span>): php-mysqlnd-<span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi.x86_64.rpm        | <span>261</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>25</span>/<span>31</span>): php-pdo-<span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi.x86_64.rpm            | <span>109</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>26</span>/<span>31</span>): php-pear-<span>1.9</span>.<span>4</span>-<span>28</span>.el6.remi.noarch.rpm           | <span>373</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>27</span>/<span>31</span>): php-pecl-jsonc-<span>1.3</span>.<span>5</span>-<span>1</span>.el6.remi.<span>5.5</span>.x86_64.rpm  |  <span>46</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>28</span>/<span>31</span>): php-pecl-<span>zip</span>-<span>1.12</span>.<span>4</span>-<span>1</span>.el6.remi.<span>5.5</span>.x86_64.rpm   | <span>269</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>29</span>/<span>31</span>): php-process-<span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi.x86_64.rpm        |  <span>54</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>30</span>/<span>31</span>): php-xml-<span>5.5</span>.<span>13</span>-<span>3</span>.el6.remi.x86_64.rpm            | <span>206</span> kB     <span>00</span>:<span>00</span><span>
(</span><span>31</span>/<span>31</span>): t1lib-<span>5.1</span>.<span>2</span>-<span>6</span>.el6_2.<span>1</span>.x86_64.rpm                | <span>160</span> kB     <span>00</span>:<span>00</span>
--------------------------------------------------------------------------------<span>
Total                                           </span><span>3.6</span> MB/s |  <span>13</span> MB     <span>00</span>:<span>03</span>

之后还有一些Is this ok [y/N]:的问题,一律回答y。经过一轮问答和安装,最后完成时的小结为:

<span>Installed:
  libjpeg</span>-turbo.x86_64 <span>0</span>:<span>1.2</span>.<span>1</span>-<span>3</span><span>.el6_5
  libjpeg</span>-turbo-devel.x86_64 <span>0</span>:<span>1.2</span>.<span>1</span>-<span>3</span><span>.el6_5
  php.x86_64 </span><span>0</span>:<span>5.5</span>.<span>13</span>-<span>3</span><span>.el6.remi
  php</span>-fpm.x86_64 <span>0</span>:<span>5.5</span>.<span>13</span>-<span>3</span><span>.el6.remi
  php</span>-gd.x86_64 <span>0</span>:<span>5.5</span>.<span>13</span>-<span>3</span><span>.el6.remi
  php</span>-mbstring.x86_64 <span>0</span>:<span>5.5</span>.<span>13</span>-<span>3</span><span>.el6.remi
  php</span>-mcrypt.x86_64 <span>0</span>:<span>5.5</span>.<span>13</span>-<span>3</span><span>.el6.remi
  php</span>-mysqlnd.x86_64 <span>0</span>:<span>5.5</span>.<span>13</span>-<span>3</span><span>.el6.remi
  php</span>-pdo.x86_64 <span>0</span>:<span>5.5</span>.<span>13</span>-<span>3</span><span>.el6.remi

Dependency Installed:
  apr</span>-util-ldap.x86_64 <span>0</span>:<span>1.3</span>.<span>9</span>-<span>3</span>.el6_0.<span>1</span><span>
  fontconfig.x86_64 </span><span>0</span>:<span>2.8</span>.<span>0</span>-<span>3</span><span>.el6
  gd</span>-<span>last</span>.x86_64 <span>0</span>:<span>2.1</span>.<span>0</span>-<span>2</span><span>.el6.remi
  httpd.x86_64 </span><span>0</span>:<span>2.2</span>.<span>15</span>-<span>30</span><span>.el6.centos
  httpd</span>-tools.x86_64 <span>0</span>:<span>2.2</span>.<span>15</span>-<span>30</span><span>.el6.centos
  libX11.x86_64 </span><span>0</span>:<span>1.5</span>.<span>0</span>-<span>4</span><span>.el6
  libX11</span>-common.noarch <span>0</span>:<span>1.5</span>.<span>0</span>-<span>4</span><span>.el6
  libXau.x86_64 </span><span>0</span>:<span>1.0</span>.<span>6</span>-<span>4</span><span>.el6
  libXpm.x86_64 </span><span>0</span>:<span>3.5</span>.<span>10</span>-<span>2</span><span>.el6
  libmcrypt.x86_64 </span><span>0</span>:<span>2.5</span>.<span>8</span>-<span>9</span><span>.el6
  libtiff.x86_64 </span><span>0</span>:<span>3.9</span>.<span>4</span>-<span>10</span><span>.el6_5
  libxcb.x86_64 </span><span>0</span>:<span>1.8</span>.<span>1</span>-<span>1</span><span>.el6
  libxslt.x86_64 </span><span>0</span>:<span>1.1</span>.<span>26</span>-<span>2</span>.el6_3.<span>1</span><span>
  mailcap.noarch </span><span>0</span>:<span>2.1</span>.<span>31</span>-<span>2</span><span>.el6
  php</span>-cli.x86_64 <span>0</span>:<span>5.5</span>.<span>13</span>-<span>3</span><span>.el6.remi
  php</span>-common.x86_64 <span>0</span>:<span>5.5</span>.<span>13</span>-<span>3</span><span>.el6.remi
  php</span>-pear.noarch <span>1</span>:<span>1.9</span>.<span>4</span>-<span>28</span><span>.el6.remi
  php</span>-pecl-jsonc.x86_64 <span>0</span>:<span>1.3</span>.<span>5</span>-<span>1</span>.el6.remi.<span>5.5</span><span>
  php</span>-pecl-<span>zip</span>.x86_64 <span>0</span>:<span>1.12</span>.<span>4</span>-<span>1</span>.el6.remi.<span>5.5</span><span>
  php</span>-process.x86_64 <span>0</span>:<span>5.5</span>.<span>13</span>-<span>3</span><span>.el6.remi
  php</span>-xml.x86_64 <span>0</span>:<span>5.5</span>.<span>13</span>-<span>3</span><span>.el6.remi
  t1lib.x86_64 </span><span>0</span>:<span>5.1</span>.<span>2</span>-<span>6</span>.el6_2.<span>1</span><span>

Replaced:
  libjpeg.x86_64 </span><span>0</span>:6b-<span>46</span>.el6          libjpeg-devel.x86_64 <span>0</span>:6b-<span>46</span><span>.el6

Complete</span>!

3.3 配置PHP-FPM的启动

因为使用yum安装,安装过程已经拷贝好了PHP-FPM的服务daemon,只需确保PHP-FPM服务能在系统重启时自动启动就行了:

# chkconfig php-fpm on

查看PHP-FPM服务的自启动状态:

# chkconfig --list php-<span>fpm
php</span>-fpm         <span>0</span>:off   <span>1</span>:off   <span>2</span>:on    <span>3</span>:on    <span>4</span>:on    <span>5</span>:on    <span>6</span>:off

正确。

3.4 停止PHP-FPM 5.4.8

查看PHP-FPM 5.4.8的进程:

# <span>ps</span> aux | <span>grep</span> php-<span>fpm
root      </span><span>2881</span>  <span>0.0</span>  <span>0.1</span> <span>204172</span>  <span>1972</span> ?        Ss    <span>2013</span>  <span>38</span>:<span>13</span> php-fpm: master process (/usr/local/php/etc/php-<span>fpm.conf)
www      </span><span>19378</span>  <span>0.0</span>  <span>1.4</span> <span>212764</span> <span>14736</span> ?        S    <span>10</span>:<span>30</span>   <span>0</span>:<span>14</span> php-<span>fpm: pool www
www      </span><span>19379</span>  <span>0.0</span>  <span>1.5</span> <span>213352</span> <span>15888</span> ?        S    <span>10</span>:<span>32</span>   <span>0</span>:<span>13</span> php-<span>fpm: pool www
www      </span><span>19657</span>  <span>0.0</span>  <span>1.3</span> <span>212076</span> <span>13964</span> ?        S    <span>18</span>:<span>45</span>   <span>0</span>:<span>02</span> php-<span>fpm: pool www
root     </span><span>20083</span>  <span>0.0</span>  <span>0.0</span> <span>103236</span>   <span>864</span> pts/<span>0</span>    S+   <span>22</span>:<span>40</span>   <span>0</span>:<span>00</span> <span>grep</span> php-fpm

可见,当前PHP-FPM 5.54.8进程的进程号(pid)是2881,注意其使用的配置文件/usr/local/php/etc/php-fpm.conf位于编译安装PHP的目录,证实了这是PHP-FPM 5.54.8进程。其余进程为其子进程,而grep php-fpm是查看进程这个命令的进程

中断PHP-FPM 5.54.8进程:

# <span>kill</span> -TERM <span>2881</span>

再次查看PHP-FPM的进程:

# <span>ps</span> aux | <span>grep</span> php-<span>fpm
root     </span><span>20087</span>  <span>0.0</span>  <span>0.0</span> <span>103236</span>   <span>864</span> pts/<span>0</span>    S+   <span>22</span>:<span>43</span>   <span>0</span>:<span>00</span> <span>grep</span> php-fpm

已经没有PHP-FPM的进程了,唯一剩下的grep php-fpm是查看进程这个命令的进程。

3.5 启动PHP-FPM 5.5.13

PHP-FPM的配置,我遵照的是参考资料[10],这是一个分级结构的配置文件,多个配置文件各司其职,便于更换配置,启用、停止配置的各模块也更容易。

启动php-fpm服务:

# service php-<span>fpm start
Starting php</span>-fpm:                                          [  OK  ]

顺利启动。

再查看其进程:

# <span>ps</span> aux | <span>grep</span> php-<span>fpm
root     </span><span>20099</span>  <span>0.0</span>  <span>0.5</span> <span>313272</span>  <span>5832</span> ?        Ss   <span>22</span>:<span>44</span>   <span>0</span>:<span>00</span> php-fpm: master process (/etc/php-<span>fpm.conf)
apache   </span><span>20100</span>  <span>0.4</span>  <span>1.1</span> <span>317112</span> <span>11876</span> ?        S    <span>22</span>:<span>44</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
apache   </span><span>20101</span>  <span>0.3</span>  <span>1.5</span> <span>319936</span> <span>15316</span> ?        S    <span>22</span>:<span>44</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
apache   </span><span>20102</span>  <span>0.4</span>  <span>1.6</span> <span>322244</span> <span>16892</span> ?        S    <span>22</span>:<span>44</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
apache   </span><span>20103</span>  <span>0.4</span>  <span>1.5</span> <span>320964</span> <span>15636</span> ?        S    <span>22</span>:<span>44</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
apache   </span><span>20104</span>  <span>0.3</span>  <span>1.3</span> <span>319648</span> <span>14256</span> ?        S    <span>22</span>:<span>44</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
apache   </span><span>20106</span>  <span>0.3</span>  <span>1.3</span> <span>319140</span> <span>13696</span> ?        S    <span>22</span>:<span>45</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
apache   </span><span>20107</span>  <span>0.1</span>  <span>0.7</span> <span>313776</span>  <span>8140</span> ?        S    <span>22</span>:<span>46</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
root     </span><span>20109</span>  <span>0.0</span>  <span>0.0</span> <span>103236</span>   <span>864</span> pts/<span>0</span>    S+   <span>22</span>:<span>47</span>   <span>0</span>:<span>00</span> <span>grep</span> php-fpm

可见其进程号为20099,其余进程为其子进程,而grep php-fpm是查看进程这个命令的进程。

3.6 问题:数据库的图像文件没有显示

原因:PHP-FPM子进程的所有者:组是apache,而不是www。而Nginx是运行在www用户下,故应当改为www。

编辑/etc/php-fpm.d/www.conf:

<span>[</span><span>www</span><span>]</span>
<span>;</span><span>user = apache</span>
user =<span> www
</span><span>;</span><span>group = apache</span>
group = www

再重启php-fpm服务:

# service php-<span>fpm stop
Stopping php</span>-<span>fpm:                                          [  OK  ]
# service php</span>-<span>fpm start
Starting php</span>-fpm:                                          [  OK  ]

查看php-fpm进程:

# <span>ps</span> aux | <span>grep</span> php-<span>fpm
root     </span><span>20208</span>  <span>0.0</span>  <span>0.5</span> <span>313272</span>  <span>5832</span> ?        Ss   <span>23</span>:<span>13</span>   <span>0</span>:<span>00</span> php-fpm: master process (/etc/php-<span>fpm.conf)
www      </span><span>20209</span>  <span>0.4</span>  <span>1.0</span> <span>316056</span> <span>10388</span> ?        S    <span>23</span>:<span>13</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
www      </span><span>20210</span>  <span>0.3</span>  <span>0.9</span> <span>315020</span>  <span>9280</span> ?        S    <span>23</span>:<span>13</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
www      </span><span>20211</span>  <span>0.4</span>  <span>1.0</span> <span>316580</span> <span>10764</span> ?        S    <span>23</span>:<span>13</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
www      </span><span>20212</span>  <span>0.4</span>  <span>1.0</span> <span>316056</span> <span>10388</span> ?        S    <span>23</span>:<span>13</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
www      </span><span>20213</span>  <span>0.0</span>  <span>0.4</span> <span>313272</span>  <span>4872</span> ?        S    <span>23</span>:<span>13</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
www      </span><span>20215</span>  <span>0.0</span>  <span>0.4</span> <span>313272</span>  <span>4876</span> ?        S    <span>23</span>:<span>13</span>   <span>0</span>:<span>00</span> php-<span>fpm: pool www
root     </span><span>20217</span>  <span>0.0</span>  <span>0.0</span> <span>103236</span>   <span>860</span> pts/<span>0</span>    S+   <span>23</span>:<span>14</span>   <span>0</span>:<span>00</span> <span>grep</span> php-fpm

可以看到PHP-FPM进程的进程号是20208,其子进程都以www用户身份运行,而grep php-fpm是查看进程这个命令的进程。

3.7 问题:登录总是失败,并重新返回到登录页面

错误日志为:

2014-06-14 23:14:36 Warning: Warning (2): Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in <span>[</span><span>Unknown, line 0</span><span>]</span>

原因:PHP session目录的所有者:组是apache:apache,而不是www:www,与实际进程运行的用户身份不符。

更改PHP session目录的所有者:组为www:www:

# chown -R www:www /var/lib/php/session

从此,王子和公主过着没羞没臊的生活!

A. 参考资料

  1. Upgrading PHP on CentOS 6.5 (Final)
    http://stackoverflow.com/questions/21502656/upgrading-php-on-centos-6-5-final
  2. Upgrading PHP 5.3.3 to 5.4.4 in CentOS 6.4
    http://superuser.com/questions/615401/upgrading-php-5-3-3-to-5-4-4-in-centos-6-4
  3. How to Upgrade PHP to 5.4.10 on CentOS 6.3
    http://serverfault.com/questions/466394/how-to-upgrade-php-to-5-4-10-on-centos-6-3
  4. Repository Configuration - Les RPM de Remi
    http://blog.famillecollet.com/pages/Config-en
  5. Basic Yum Commands and how to use them
    http://yum.baseurl.org/wiki/YumCommands
  6. How do I upgrade to the latest PHP version in CentOS with yum?
    http://serverfault.com/questions/456968/how-do-i-upgrade-to-the-latest-php-version-in-centos-with-yum
    尽管这是从PHP 5.3升级到5.4,不过这是使用Remi安装库。
  7. Setting Up PHP behind Nginx with FastCGI
    http://www.sitepoint.com/setting-up-php-behind-nginx-with-fastcgi/
  8. Running multiple PHP versions is so easy with FastCGI
    http://www.ondrejsimek.com/blog/running-multiple-php-versions-is-so-easy-with-fastcgi/
  9. Build PHP 5.4 on CentOS 6.2
    http://benramsey.com/blog/2012/03/build-php-54-on-centos-62/
    这是关于如何从源代码编译、构建、安装PHP 5.4的。
  10. A better way to run PHP-FPM
    http://mattiasgeniar.be/2014/04/09/a-better-way-to-run-php-fpm/
  11. Install Nginx, PHP 5.5 and FastCGI on CentOS 6
    http://geekpeek.net/install-nginx-php55-fastcgi/
  12. Nginx and PHP-FPM Configuration and Optimizing Tips and Tricks
    http://www.if-not-true-then-false.com/2011/nginx-and-php-fpm-configuration-and-optimizing-tips-and-tricks/
  13. Home - PHP-FPM
    http://php-fpm.org/
  14. PHP: FastCGI Process Manager (FPM) - Manual
    http://php.net/manual/en/install.fpm.php
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:PHP 大小写转化函数的笔记Article suivant:PHP EXCEL相关