配置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. 「loj3057」「hnoi2019」校园旅行

    题目 一个n个点m条边的无向图,每个点有0 / 1 的标号; 有q个询问,每次询问(u,v)直接是否存在回文路径(可以经过重复的点和边); $1 \le n \le 5 \times 10^3  , ...

  2. A1083. List Grades

    Given a list of N student records with name, ID and grade. You are supposed to sort the records with ...

  3. 【洛谷P2384】最短乘积路径

    题目大意:给定 N 个点,M 条边的有向图,边有边权,求从 1 号顶点到 N 号顶点的最短乘积路径.(经过的路径乘积最小)结果对9987取模. 乘积会爆 long long ,同时由于 dij 算法的 ...

  4. springmvc的controller中使用@Transactional无效

    最近看mybatis的时候做了一个练习,但是进行事务处理的时候出了问题,如下 package com.henu.lz.controller; import org.springframework.be ...

  5. Spark记录-spark-env.sh配置

    环境变量 含义 SPARK_MASTER_IP master实例绑定的IP地址,例如,绑定到一个公网IP SPARK_MASTER_PORT mater实例绑定的端口(默认7077) SPARK_MA ...

  6. Hbase记录-Hbase shell使用命令

    1.进入hbase shell  执行./bin/hbase shell 2.进入后,help  帮助信息,如可以使用help 'create' 3.创建表:create 'test','cf'  表 ...

  7. HashMap内存泄漏

    看Java核心技术1的时候看到HashMap的对象,书中讲到: 1.如果有一个值,对应的键不再使用他了,但由于key与value之间存在强引用,是不会被垃圾回收的 2.垃圾回收器跟踪活动的对象,只要映 ...

  8. WebSocket 实战之——【WebSocket 原理】

    一.WebSocket是什么? HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算). 首先HTTP有1.1和1.0之说,也就 ...

  9. cdh-5.10.0搭建安装

    1.修改主机名为master, slave1, slave2 vim /etc/sysconfig/network HOSTNAME = master HOSTNAME = slave1 HOSTNA ...

  10. C# 实现Bresenham算法(vs2010)

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...