安装前说明:

  安装环境: CentOS6

  安装应用程序:httpd2.4 + mariadb + php

  安装次序: 先编译安装 httpd2.4和mariadb,最后安装php

  编译安装 httpd2.4:https://www.cnblogs.com/ckh2014/p/10777961.html

  编译安装 mariadb:   https://www.cnblogs.com/ckh2014/p/10798141.html

  PHP的下载地址:https://www.php.net/releases/

一、以模块方式安装php

1. 解决依赖关系

# yum -y groupinstall "Desktop Platform Development"
# yum -y install bzip2-devel libmcrypt-devel libxml2-devel

2.编译安装php-VERSION

./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 --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts

说明:
  1. 这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项
    --enable-maintainer-zts
  2. 如果使用PHP5.3以上版本,为了链接mysql数据库,可以指定mysqlnd,这样在本机就不需要先安装mysql或mysql开发包了,mysqlnd从php5.3开始可用,可以编译时绑定到他(而不用和具体的mysql客户端库绑定形成依赖),但从php5.4开始它就是默认设置了
    # ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

# make
# make test
# make install

为php提供配置文件:

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

3. 编辑apache配置文件httpd.conf,以apache支持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

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

4. 编译安装Xcache

下载Xcache的地址:http://xcache.lighttpd.net/

安装

# tar xf xcache-version
# cd xcache-version
# /usr/local/php/bin/phpize
# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
# make && make install

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

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

编辑php.ini,整合php和xcache

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

  # mkdir /etc/php.d
  # cp xcache.ini /etc/php.d

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

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

  zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

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

二、以fpm方式安装php

1. 安装

# 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   
# make && make install

2. 为php提供配置文件

# mkdir /etc/php.d
# cp php.ini-production /etc/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

为php-fpm提供配置文件

# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

编辑php-fpm的配置文件

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

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

pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pid = /usr/local/php/var/run/php-fpm.pid

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

# service php-fpm start

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

# ps aux | grep php-fpm

4. 配置httpd-2.4

启用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

定位至AddType,添加如下两行识别.php文件

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

再定位到DirectoryIndex,添加index.php

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

ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
例如:
<VirtualHost *:80>
DocumentRoot "/www/a.org"
ServerName alen.com
ServerAlias www.alen.com ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/a.org/$1 <Directory "/www/a.org">
Options none
AllowOverride none
Require all granted
</Directory>
</VirtualHost>

Note:

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

比如就在DocumentRoot下设置
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/$1

5. 编译安装Xcache

安装

# tar xf xcache-version
# cd xcache-version
# /usr/local/php/bin/phpize
# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
# make && make install

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

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

编辑php.ini,整合php和xcache

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

  # mkdir /etc/php.d
  # cp xcache.ini /etc/php.d

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

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

  zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

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

测试

# ab -c 20 -n 10000 http://192.168.1.103/pma/index.php

LAMP(七)之编译安装php(模块化和fpm两种方式)的更多相关文章

  1. centos安装图形界面通常有两种方式

    centos安装图形界面通常有两种方式   1.通过系统安装,在配置选择软件界面,选择GNOME桌面模式.

  2. Ubuntu 安装 JDK 7 / JDK8 的两种方式

    ubuntu 安装jdk 的两种方式: 1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用pp ...

  3. 安装第三方jar包的两种方式

    由于部分第三放jar包没有放到maven中央仓库,而项目中又依赖了这些jar包,那么如何安装?我实践了两种,特做记录. 一.安装到 nexus 私有库: 在 3rd party 仓库下有个 Artif ...

  4. 高逼格的实现WiFi共享,不安装第三方wifi共享软件,两种方式实现开启wifi的功能

    作为一枚程序员,不会点高逼格的doc命令,那么都有点感觉对不起自己的行业了,好了废话就到这里了   第一种方式: 首先使用cmd命令:window键+R 然后输入cmd回车 第一种方式: 第一步: 设 ...

  5. maven 编译插件指定jdk版本的两种方式

    第一种方式: <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration&g ...

  6. Httpd服务进阶知识-LAMP源码编译安装

    Httpd服务进阶知识-LAMP源码编译安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家都知道,动态资源交给fastcgi程序处理,静态资源依旧由httpd服务器处理  ...

  7. CentOS6.3 编译安装LAMP(2):编译安装 Apache2.2.25

    所需源码包: /usr/local/src/Apache-2.2.25/httpd-2.2.25.tar.gz 编译安装 Apache2.2.25 #切换到源码目录 cd /usr/local/src ...

  8. CentOS6.3 编译安装LAMP(2):编译安装 Apache2.4.6

    Apache官方说: 与Apache 2.2.x相比,Apache 2.4.x提供了很多性能方面的提升,包括支持更大流量.更好地支持云计算.利用更少的内存处理更多的并发等.除此之外,还包括性能提升.内 ...

  9. CentOS6.3 编译安装LAMP(3):编译安装 MySQL5.5.25

    所需源码包: /usr/local/src/MySQL-5.5.25/cmake-2.8.8.tar.gz /usr/local/src/MySQL-5.5.25/mysql-5.5.25.tar.g ...

随机推荐

  1. 【原创】(二)Linux进程调度器-CPU负载

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  2. EOJ Monthly 2019.2 E 中位数 (二分+中位数+dag上dp)

    题意: 一张由 n 个点,m 条边构成的有向无环图.每个点有点权 Ai.QQ 小方想知道所有起点为 1 ,终点为 n 的路径中最大的中位数是多少. 一条路径的中位数指的是:一条路径有 n 个点,将这  ...

  3. How to setup backup by using EMC NW + EMC NMM for sqlserver failover cluster (not always on)

    As we said, sqlsever fail over cluster is perviously version of always on. The HA was guarenteed by ...

  4. ssh连接超时的问题

    vi /etc/ssh/sshd_config ClientAliveInterval ClientAliveCountMax # 注: # ClientAliveInterval选项定义了每隔多少秒 ...

  5. UNIX读书笔记----UNIX基础知识

    UNIX体系结构: 从严格意义上讲,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们通常将这种软件称为内核(Kernel),因为他相对较小,而且位于环境的核心.图片显示了UNI ...

  6. Linux文本三剑客

    grep 文本过滤工具. 作用: 文本搜索工具,根据用户指定的行进行匹配检查,打印匹配到的行. 模式: 由正则表达式字符及文本字符所编写的过滤条件. grep的使用 语法:  grep [OPTION ...

  7. 保留yum安装的软件包

    文件路径 /etc/yum.conf [root@opvnserver ~]# grep "keepcache" /etc/yum.conf keepcache=0 [root@o ...

  8. NIO学习笔记,从Linux IO演化模型到Netty—— 究竟如何理解同步、异步、阻塞、非阻塞

    我的观点 首先,分开各自理解. 1. 同步:描述两个(或者多个)个体之间的协调关系. 比如,单线程中,methodA调用了methodB,methodB返回后,methodA才往下执行,那么称A同步调 ...

  9. 死磕Lambda表达式(一):初识Lambda

    弱小和无知不是生存的障碍,傲慢才是.--<三体> 什么是Lambda表达式 Lambda表达式是表示可传递匿名函数的一种简洁方式,Lambda表达式没有名称,但是有参数列表.函数主体.返回 ...

  10. 分享下超实用的用skura frp做内网穿透的经验

    操作目的: 使无公网ip的主机能被外网访问,实现ssh对服务器的远程管理 硬件准备: 1.服务端:skura frp主机(skura frp 免费提供,有待创建) 2.客户端:接在无线路由器(内网)上 ...