配置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. Linux下,根据FHS定义出来的每个目录的作用

    (下表摘自<鸟哥的Linux的私房菜>) 在Linux下,根据FHS定义出来的每个目录应该放置的档案内容为: 目录 应放置档案内容 / 根目录 root (/),一般建议在根目录底下只接目 ...

  2. Centos7.2安装搜狗拼音

    方法一: Fedora 19/20/21/rawhide 使用以下命令添加源: # yum install dnf-plugins-core # dnf copr enable mosquito/my ...

  3. dijkstra 的优先队列优化

    既然要学习算法,就要学习到它的精髓,才能够使用起来得心应手. 我还是远远不够啊. 早就知道,dijkstra 算法可以用优先队列优化,我却一直不知道该怎样优化.当时,我的思路是这样的:假设有n个顶点, ...

  4. yolov2-tiny-voc.cfg 参数解析

    一.参数解析 [net] batch=64 # number of images pushed with a forward pass through the network subdivisions ...

  5. Keepalive+nginx实现高可用负载均衡方案

    Keepalive+nginx实现高可用负载均衡方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.nginx做高可用工作在第几层? 上个月我发表了一篇keepalive+lv ...

  6. JavaSE学习总结(十七)—— IO流

    一.IO流概要 1.1.概念 开发中经常要进行输入输出操作,掌握Java中的IO流显得非常必要. 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流, ...

  7. 内联函数 —— C 中关键字 inline 用法解析

    一.什么是内联函数 在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗. 为了解决这个问题,特别的引入了inline修饰符,表示为内联函数. 栈空间就是指放 ...

  8. CentOS6.8下Jenkins+maven+tomcat+git+shell自动构建、部署web应用环境的搭建

    参考资料:http://www.cnblogs.com/cheng95/p/6542036.html http://www.cnblogs.com/software-test/p/7068278.ht ...

  9. Centos7系统初始化脚本

    前言: 因公司业务增加,陆续新增服务器,时不时的来几台,手动地一台台对服务器初始化操作感觉太麻烦. 于是乎,根据初始化需求整合了一个初始化脚本,实现批量脚本初始化操作. 说明: 本脚本根据自身需求编写 ...

  10. java实现《剑指offer》(一)1~10

    每段代码都是在牛客网在线编程通过后,然后拷过来的,准确性可以保证. 1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入 ...