配置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. C++ 中的导致编译错误汇总

    多少年来,各路英雄好汉,八方神犇大佬,在CE中饮恨退役. OI的CE,还是那样熟悉的味道. (博主只能想到这么多,欢迎大家来补充) 1.变量名和内置函数冲突?!?! C++内置函数很多很多,许多你不知 ...

  2. 【SPOJ283】Naptime

    题目大意:给定一个由 N 个点组成的环,点有点权,现从中选出 M 个点,对于顺时针方向来说,每一段被选取的第一个点的点权不计入答案贡献,求选出的最大权值是多少. 题解:首先考虑线性的情况,设 \(dp ...

  3. JS面试题(二)(常见算法编程)

    1.字符串转驼峰 例如:border-bottom-color ----> borderBottomColor var str="border-bottom-color"; ...

  4. Windows 系统安装多个版本JDK, 修改环境变量不生效

    1. 前提: 1) 配置环境变量: JAVA_HOME 2) 配置PATH: 添加%JAVA_HOME%\bin 2. 解决: 1) 确保最新的, 你希望使用的JDK, 配置在PATH的字符串的前面, ...

  5. Swift学习笔记5

    1.你可以将一个继承来的只读属性重写为一个读写属性,只需要在重写版本的属性里提供 getter 和 setter 即可.但是,你不可以将一个继承来的读写属性重写为一个只读属性. 2.你可以通过把方法, ...

  6. Dapper总结(一)---基本CRUD操作

    一.dapper是什么 dapper是一款轻量级的ORM(Object Relationship Mapper),它负责数据库和编程语言之间的映射.SqlConnection,MysqlConnect ...

  7. xml/map转换器,递归设计思路【纯原】

    xml/map转换器 xml转换: xml/map转换器 xml合并: xml合并 snagit图片:http://pan.baidu.com/s/1nuKJD13 git样例: https://gi ...

  8. for、foreach和Iterator区别及ConcurrentModificationException异常

    (问:1.for.foreach和Iterator遍历有什么区别    2.遍历删除ConcurrentModificationException异常.) 1.在形式上 for的形式是 for(int ...

  9. Linux - 日志处理一

    Linux 日志处理 history # 历时命令默认1000条 HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " # 让history命令显示具体时间 hi ...

  10. 字体QFont

    import sys from PyQt5.QtWidgets import QApplication, QWidget,QLabel from PyQt5.QtGui import QFont fr ...