在前一篇博文中介绍了LAMP的安装及配置。这里专门介绍PHP以fastCGI的方式与httpd整合的情况下,具体如何编译及配置。而且假定httpd、mysql均如前一篇博文介绍的安装配置完毕。php也采取一样版本的源码包php-5.6.1.tar.bz2。

1.  编译安装php

# tar xf php-5.6.1.tar.bz2

# cd php-5.6.1

# ./configure --prefix=/usr/local/php --enable-sockets --enable-mbstring --enable-xml --enable-fpm --with-bz2 --with-openssl --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-mcrypt --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/etc/php --with-config-file-scan-dir=/etc/php.d

# make && make install

注:编译时请确保机器的内存大于1G,或者在./configure 的选项中加上“--disable-fileinfo”,否则可能出现编译失败的情况。

2.  为php提供配置文件

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

3.  配置php-fpm

a) 为php-fpm提供配置文件

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

b) 编辑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 = 8
       pid = /usr/local/php/var/run/php-fpm.pid

c) 为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

4.  启动php-fpm服务,测试运行状态

# service php-fpm start

# netstat -tnlp | grep php-fpm

默认情况下,fpm监听在127.0.0.1的9000端口

5.  修改httpd的主配置文件httpd.conf

a) 启用httpd的相关模块

LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

b) 在相应的位置添加如下行

AddType application/x-httpd-php  .php

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

c) 修改DirectoryIndex 的定义为:

DirectoryIndex  index.php  index.html

6.  配置虚拟主机支持使用fcgi

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

ProxyRequests Off
      ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

参数选项含义解释

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

举例:

<VirtualHost *:80>
   DocumentRoot "/www/htdocs/test.com"
   ServerName www.test.com
   ServerAlias test.com

ProxyRequests Off
   ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/htdocs/test.com/$1

<Directory "/www/htdocs/test.com">
       Options none
       AllowOverride none
       Require all granted
   </Directory>
</VirtualHost>

转载于:https://blog.51cto.com/deshanrenjian/1561648

PHP源码安装及配置——以fastCGI的方式与httpd整合相关推荐

  1. CentOS上PHP源码安装和配置

    CentOS上PHP源码安装和配置 此文是在CentOS 7上已经部署了Nginx的基础上进行的 关于CentOS7上安装Nginx,可参考我之前的文章: CentOS上Nginx安装记录 我们现在在 ...

  2. mysql源码启动_Mysql源码安装、配置、初始化及启动

    [在此处输入文章标题] 主机环境redhat6.5 64位 实验环境服务端ip 172.25.29.1  mysql 安装包mysql-boost-5.7.11.tar.gz cmake-2.8.12 ...

  3. php mysql 源码 安装教程_源码安装和配置apache(httpd)和 PHP 和 mysql全过程(一)...

    [服务器环境为:CentOS6.5 64位目标:搭建LNMP(Linux + Nginx + MySQL + PHP +SVN),其中svn是用来代替ftp,方便开发中调试同步代码相关目录:所有软件都 ...

  4. centos7.4下安装配置PHP服务(源码安装)并配置nginx支持php

    一.检查php是否已经安装,使用php -v,是否能够看到版本号,或者使用rpm -qa | grep php查看是否安装过. # yum remove php* -y 二.依赖包安装 Linux软件 ...

  5. centos7.4配置nginx php,centos7.4下安装配置PHP服务(源码安装)并配置nginx支持php

    一.检查php是否已经安装,使用php -v,是否能够看到版本号,或者使用rpm -qa | grep php查看是否安装过. # yum remove php* -y 二.依赖包安装 Linux软件 ...

  6. mysql源码安装配置_MySQL源码安装及配置

    目录 --cmake下载安装 http://cmake.org/download/ # wgethttp://cmake.org/files/v3.3/cmake-3.3.2.tar.gz # tar ...

  7. linux samba代码,Linux下Samba服务器源码安装及配置

    获取samba源代码 你可以通过执行svn命令svn co svn://svnanon.samba.org/samba/trunk samba.获取最新的samba源文件,也可以直接从http://s ...

  8. php mysql 论坛 源码_LNMP架构的搭建(linux+nginx+mysql+php源码安装 )+Discuz论坛的搭建...

    主机环境 redhat6.5 64位 实验环境 服务端 ip172.25.29.1  nginx+mysql+php 安装包   nginx-1.10.1.tar.gz mysql-boost-5.7 ...

  9. httpd源码安装-及实现虚拟主机

    httpd安装 源码安装 [root@http ~]# wget https://downloads.apache.org/httpd/httpd-2.4.54.tar.bz2 https://dow ...

最新文章

  1. 用Visio进行数据库建模、设计和实现
  2. C++ 默认参数和占位符
  3. 以下哪些是oracle预定义角色,Oracle中预定义角色有哪些?
  4. windows ping 不通虚拟机
  5. Matlab数据标准化
  6. python正则表达式中group
  7. BackgroundWorker的包装器
  8. property内存管理策略
  9. python3.7 keras和tensorflow兼容_解决Keras 与 Tensorflow 版本之间的兼容性问题
  10. Android服务注册完整过程源码分析
  11. vuecli+axios的post请求传递参数异常
  12. 解决VScode中C语言中文乱码问题
  13. mosquitto无法连接
  14. 冰河又一MySQL力作出版(文末送书)!!
  15. android中weight计算方法,详解Android中weight的使用方法
  16. 世界期货市场竞争格局的变迁
  17. maven创建eclipse wtp项目
  18. 信息安全 SEED Lab2 Shellshock Attack
  19. 关于微软鼠标和键盘中心安装报错1603的解决方法
  20. 【星球问答精选】我想打造个性化的高效工作流,不会编程怎么办?

热门文章

  1. matlab数字图像处理课程设计报告,数字图像处理课程设计实验报告.doc
  2. c语言手游常用代码,c语言源代码【操作流程】
  3. lua jit java jit_Lua JIT 2.0 发布了,一百五十倍的性能提升!
  4. 爱尔兰都柏林圣三一大学计算机排名,2021年爱尔兰都柏林圣三一大学世界及专业排名 不愧是最古老的学府!...
  5. assume用法及意思_词汇精选:assume的用法和辨析
  6. android 电池高温关机,Android 关机问题分析指南
  7. 内网击穿之 HTTP 穿透:网站没上线?如何让全世界的人都可以访问你本地的网站?
  8. xpwifi热点设置android,教你在XP电脑中开启设置WiFi热点使用的步骤
  9. distinct返回null报错_C#之集合常用扩展方法与Linq
  10. 安装默认报表服务器虚拟目录,报表服务器虚拟目录(Reporting Services 配置)