配置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







说明:如果使用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





为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





为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

接下来就可以启动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



三、配置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

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





 2、定位至DirectoryIndex index.html 

   修改为:

    DirectoryIndex  index.php  index.html

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

①启用虚拟主机配置

# cd /etc/httpd/

vim httpd.conf

注释掉公共的访问www目录

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



打开虚拟主机配置文件

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





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



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>





创建对应的虚拟主机目录

# 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实现。

报错处理:

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





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

DirectoryIndex  index.php  index.html





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   



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



而后重新启动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



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







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

lamp环境搭建之配置apache与fpm方式的php的更多相关文章

  1. LAMP环境搭建备忘 -- Apache、pHp 安装 (二)

    上一篇 Linux 已经安装好了,我们选择了 CentOS 7 的最小化安装,即没有图形界面,并且我们在安装时设置了网络连接即能够连上外部网络,还设置了 root 密码.下面我们要在此基础上继续安装 ...

  2. LAMP环境搭建与配置(1)

    安装和配置MySQL.Apache.PHP 概念 LAMP是Linux Apache MySQL PHP 的简写,把Apache.MySQL以及PHP安装在Linux系统上,组成一个环境来运行PHP的 ...

  3. LAMP环境搭建与配置

    下载mysql 解压 运行错误 下载插件 启动成功 安装Apache 解压 报错  安装插件 再次报错 修改文档 成功 安装插件 下载 安装php 安装完成 解析php 安装完成 虚拟主机(共享主机, ...

  4. LAMP环境搭建和配置(2)

    配置httpd 默认虚拟主机 编辑hpptd的主配置文件 搜索httpd-vhost,把行首的#号删除 保存主配置文件,然后编辑虚拟主机配置文件 重新编辑配置段(第一段为默认虚拟主机) ServerA ...

  5. LAMP环境搭建与配置(3)

    PHP配置 查看PHP配置文件的位置 #  /usr/local/php/bin/php   -i  |grep  -i  "loaded configuration file" ...

  6. LAMP环境搭建成功后的部分相关配置

    LAMP环境搭建成功后,通常还需要做一些其他配置来完善,本文主要记录常用到的一些设置. 所有的配置是基于Ubuntu 16.04 + Apache2.4 + Mysql5.7 + Php7.0,对于其 ...

  7. lamp环境搭建(ubuntu)

    系统:Ubuntu14.04 方法一.最简单的在线安装 (参考网址:http://os.51cto.com/art/201307/405333.htm) 具体过程: [1]打开终端,执行命令 # su ...

  8. LAMP环境搭建教程(原创)

    学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP.WAMP.MAMP等.这里我介绍一下LAMP环境的搭建,即Linux.Apache.MySQL.PHP环境. 一. ...

  9. LAMP环境搭建教程

    原文:LAMP环境搭建教程 学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP.WAMP.MAMP等.这里我介绍一下LAMP环境的搭建,即Linux.Apache.M ...

随机推荐

  1. apigateway-kong(六)认证

    到上游服务(API或微服务)的流量通常由各种Kong认证插件的应用程序和配置来控制.由于Kong的服务实体(Service Entity)代表自己的上游服务的1对1映射,最简单的方案是在选择的服务上配 ...

  2. NOIP 普及组 2014 珠心算测验

    传送门 https://www.cnblogs.com/violet-acmer/p/9898636.html 题解: 枚举两两间出所有的可能加和,然后遍历一遍这 n 个数,找出满足条件的总个数. 这 ...

  3. 无法SSH服务器的解决过程(openssh-daemon is stopped)

    公司某台服务器不知为何无法ssh连接上,进入现场查看: 1.执行netstat -atnlp|grep ssh,没有找到ssh端口 2.执行ps aux|grep ssh,没找到相关进程 3.执行se ...

  4. java基础-Eclipse开发工具介绍

    java基础-Eclipse开发工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 所谓工欲善其事必先利其器,即将身为一名Java开发工程师怎么能没有一款好使的IDE呢?今天就 ...

  5. Xen的入门到放弃

    Xen的入门到放弃 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Xen 是一个开放源代码虚拟机监视器(VMM),由剑桥大学的"Ina Pratt"和" ...

  6. Linux wget断点续传,限速下载

    未安装wget,联网执行以下命令即可: yum install wget 1.断点续传,只需要添加 -c 参数即可 wget -c http://mirrors.163.com/centos/7.5. ...

  7. python---模板引擎

    布局文件layout.html:就是对文件的格式化输出(对其中的标签进行替换) <!DOCTYPE html> <html lang="en"> <h ...

  8. js的模块化

    模块化的好处 以前我们平常写js,需要引用大量大js文件,还得注意先后顺序,因为是一层一层依赖的关系.很是麻烦,现在有了模块化,我们只需要知道,我们要实现这个功能需要哪一个js文件就ok,其他的不需要 ...

  9. 在eclipse中启动项目报java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space

    在我们启动项目的时候经常会出现内存溢出这个错误  设置一下内存就ok 错误信息 java.util.concurrent.ExecutionException: java.lang.OutOfMemo ...

  10. JAVA-大白话探索JVM-运行时内存(三)

    前面章节 JAVA-大白话探索JVM-类加载器(一) JAVA-大白话探索JVM-类加载过程(二) JVM运行时内存 通过之前的章节,我们知道.class类如何加载到内存中,如图红框 开始讲讲内存空间 ...