Ubuntu 12.04升级到Ubuntu 14.04导致Apache2从2.2升级到2.4.10版本PHP服务器的重新修正





现象


服务器已经根据Ubuntu 12.04下安装配置Worker工作模式的Apache 支持PHP设置成了Worker模式,但是当系统从Ubuntu 12.04升级到Ubuntu 14.04导致Apache22.2升级到2.4.10版本后,而MPM模块被还原为prefork模式,导致大量的Apache2进程被创建出来,时间稍微一长,系统出现大量的OOM记录,直到系统最后宕机。

Ubuntu 14.04下查看所有可用的MPM模块,命令如下:

查看当前正在使用的MPM模块,命令如下:

可以看到,目前正在使用的模块就是prefork模块。

使用apachectl -V | grep -i mpm可以更加清晰的打印出当前使用的模块

注意,在Ubuntu 14.04下执行apache2 -l命令与Ubuntu 12.04下面的输出结果是不同的,Ubuntu 14.04下如果使用prefork模块输出的信息如下:

默认情况下Ubuntu 14.04中的PHP默认是没有线程安全支持,如果使用mpm_event支持的话,会提示如下信息:

修复方式


1.重新安装系统升级过程中可能会被移除的PHP-FPM模块

2.关闭Apache2内建的PHP支持,开启Apache2的FastCGI,PHP5-FPM支持

3.修改PHP5-FPM的配置文件

找到

修改为:

注意,上面修改了四处地方,listen,listen.owner,listen.group,listen.mode
注意,如果提示如下错误:

则说明listen.owner,listen.group,listen.mode这三行没有打开。
4.重启PHP5-FPM服务

5.切换Apache2Event-MPM模式

6.启用Apache2cache,expire,gzip模块,加强服务器性能

7.卸载libapache2-mod-php5,否则每次这个模块更新之后,都会导致apache2被自动切换到mpm_prefork模式

8.调整配置文件

Apache 2.4.10的配置文件如果按照Apache 2.2的配置文件的话,是没办法启用PHP-FPM的,Apache 2.4.10版本使用SetHandler的方式支持PHP-FPM是改动最少的一种方式了。

找到

调整为如下:

同理,调整HTTPS的配置文件。

9.重启Apache2服务

参考链接


发布者

发表评论

电子邮件地址不会被公开。 必填项已用*标注