lamp环境搭建之配置apache与fpm方式的php

时间:2022-12-28 15:14:00

配置apache-2.4.9与fpm方式的php-5.4.26

一、apache、MySQL的安装参考《编译安装lamp环境》

http://blog.csdn.net/reblue520/article/details/50401824

二、编译安装php-5.4.26

1、解决依赖关系:

请配置好yum源(可以是本地系统光盘)后执行如下命令:

# yum -y groupinstall "Desktop Platform Development"

# yum install -y bzip2-devel libmcrypt-devel

2、编译安装php-5.4.26,两种PHP模式共存(apache模块方式和php-fpm)

//删除之前的源码包

# rm -rf php-5.4.26

# tar xf php-5.4.26.tar.bz2

# cd php-5.4.26

# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets
--enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2



//共存情况下使用

# ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets
--enable-fpm --with-mcrypt  --with-config-file-path=/etc/php5/ --with-config-file-scan-dir=/etc/php5.d --with-bz2



lamp环境搭建之配置apache与fpm方式的php



说明:如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。

# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd



# make

# make intall

lamp环境搭建之配置apache与fpm方式的php



为php提供配置文件:

# mkdir /etc/php5

# cp php.ini-production /etc/php5/php.ini

3、配置php-fpm

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

# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

# chmod +x /etc/rc.d/init.d/php-fpm

# chkconfig --add php-fpm

# chkconfig php-fpm on

# chkconfig --list php-fpm

lamp环境搭建之配置apache与fpm方式的php



为php-fpm提供配置文件:

# cd /usr/local/php5/etc

# cp php-fpm.conf.default php-fpm.conf



编辑php-fpm的配置文件:

# vim /usr/local/php5/etc/php-fpm.conf

配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 3

pm.max_spare_servers = 8

pid = /usr/local/php5/var/run/php-fpm.pid

lamp环境搭建之配置apache与fpm方式的php

lamp环境搭建之配置apache与fpm方式的php

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

# service php-fpm start



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

# ps aux | grep php-fpm



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

# netstat -tnlp | grep php-fpm

tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      689/php-fpm 

或者

# ss -tnlp | grep php-fpm



lamp环境搭建之配置apache与fpm方式的php

三、配置httpd-2.4.4

1、启用httpd的相关模块

# cd /etc/httpd/

//将之前使用的php配置文件改名,并启用初始的httpd.conf文件

# mv httpd.conf httpd.conf.module

# cp httpd.conf.bak httpd.conf



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

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

lamp环境搭建之配置apache与fpm方式的php

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

# vim /etc/httpd/httpd.conf

 1、添加如下二行

   AddType application/x-httpd-php  .php

   AddType application/x-httpd-php-source  .phps



lamp环境搭建之配置apache与fpm方式的php

 2、定位至DirectoryIndex index.html 

   修改为:

    DirectoryIndex  index.php  index.html

lamp环境搭建之配置apache与fpm方式的php

3、配置虚拟主机的方式支持使用fcgi

①启用虚拟主机配置

# cd /etc/httpd/

vim httpd.conf

注释掉公共的访问www目录

#DocumentRoot "/usr/local/apache/htdocs"



打开虚拟主机配置文件

Include /etc/httpd/extra/httpd-vhosts.conf



lamp环境搭建之配置apache与fpm方式的php

在相应的虚拟主机中添加类似如下两行



ProxyRequests Off

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

# cd /etc/httpd/extra/

# vim httpd-vhosts.conf

添加如下内容:



<VirtualHost *:80>

    ServerAdmin webadmin@a.com

    DocumentRoot "/web/a.com/htdocs"

    ServerName www.a.com

    ServerAlias a.com

    ErrorLog "logs/a.com.err"

    CustomLog "logs/a.com.access" combined

    <Directory "/web/a.com/htdocs">

Options None

Require all granted

    </Directory>

    ProxyRequests Off

    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/a.com/htdocs/$1

</VirtualHost>





<VirtualHost *:80>

    ServerAdmin webadmin@b.org

    DocumentRoot "/web/b.org/htdocs"

    ServerName www.b.org

    ServerAlias b.org

    ErrorLog "logs/b.org.err"

    CustomLog "logs/b.org.access" combined

    <Directory "/web/b.org/htdocs">

Options None

Require all granted

    </Directory>

    ProxyRequests Off

    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/b.org/htdocs/$1

</VirtualHost>



lamp环境搭建之配置apache与fpm方式的php

创建对应的虚拟主机目录

# mkdir -pv /web/{a.com,b.org}/htdocs

# vim /web/a.com/htdocs/index.php



例如:

<VirtualHost *:80>

    DocumentRoot "/www/magedu.com"

    ServerName magedu.com

    ServerAlias www.magedu.com



ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/magedu.com/$1



    <Directory "/www/magedu.com">

        Options none

        AllowOverride none

        Require all granted

    </Directory>

</VirtualHost>



ProxyRequests Off:关闭正向代理

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

4.添加主机地址解析

# vim /etc/hosts

加入:

192.168.8.40 www.a.com a.com

192.168.8.40 www.b.org b.org

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

报错处理:

lamp环境搭建之配置apache与fpm方式的php

httpd-vhosts.conf文件中<Directory>

改成</Directory>

若打开的主页时,不显示内容,出现下载

可能是/etc/httpd/extra/httpd-vhosts.conf文件没有配置如下内容:

<Directory "/web/b.org/htdocs">

Options None

Require all granted

    <Directory>

6、通过单机的方式配置apache和php结合

编辑apache配置文件httpd.conf,以apache支持php



# vim /etc/httpd24/httpd.conf

1、添加如下二行

AddType application/x-httpd-php  .php

AddType application/x-httpd-php-source  .phps

lamp环境搭建之配置apache与fpm方式的php



2、定位至DirectoryIndex index.html 修改为:

DirectoryIndex  index.php  index.html

lamp环境搭建之配置apache与fpm方式的php



3、启用httpd的相关模块

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

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so   

lamp环境搭建之配置apache与fpm方式的php

4、关闭正向代理

ProxyRequests Off:关闭正向代理

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

ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.251.134:9000/usr/local/apache/htdocs$1

lamp环境搭建之配置apache与fpm方式的php

而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。



最后在php的指定的fcgi的路径上提供一个php的测试页面: 



# vim /usr/local/apache/htdocs/index.php 

<?php

$link = mysql_connect('172.16.251.171','wei','wei');

if ($link)

  echo "Connection Success....."

else

  echo "Connection Failrue....."

mysql_close();

phpinfo();

?>

四、为php添加xcache加速器

1、安装

# tar xf xcache-3.0.3.tar.bz2 

# cd xcache-3.0.3

# /usr/local/php5/bin/phpize 

# ./configure --enable-xcache --with-php-config=/usr/local/php5/bin/php-config

# make && make install



安装结束时,会出现类似如下行:

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

2、编辑php.ini,整合php和xcache:

首先将xcache提供的样例配置导入php.ini

# mkdir /etc/php5.d

# cp xcache.ini /etc/php5.d



说明:xcache.ini文件在xcache的源码目录中。



接下来编辑/etc/php5.d/xcache.ini,找到extension开头的行,修改为如下行:

# vim /etc/php5.d/xcache.ini



extension = /usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/xcache.so

lamp环境搭建之配置apache与fpm方式的php

通过打印phpinfo()信息可以看到xcache是否安装成功



lamp环境搭建之配置apache与fpm方式的php



注意:如果php.ini文件中有多条zend_extension指令行,要确保此新增的行排在第一位。