本章概要
CGI
CGI:Common Gateway Interface
可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准
请求流程:
Client --(httpd) --> httpd–(cgi) --> application server (program file) --(mysql) --> mysql
php: 脚本编程语言、嵌入到html中的嵌入式web程序语言
基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)
知识扩展:
CGI
一种协议,能够处理web服务器发送的动态资源的请求,返回结果给web服务器
FASTCGI
基于CGI的优化的协议,处理速度更快
CGI可以通过多种语言进行编写,而php语言能够更好、更简洁的编写CGI
PHP-CGI
通过PHP语言编写的对CGI协议的实现,单次只能处理一个请求,功能较差
PHP-FPM
基于PHP-CGI的优化,实现了动静资源分别处理功能,减轻了服务器的压力
CGI进程
处理web服务器发送的动态资源请求,调用和初始化zend虚拟机
CGI脚本
被执行的PHP源码文件
zend虚拟机
把动态资源请求的php文件进行语法分析,编译为opcode并执行
PHP-FPM是CGI进程的管理,当动态资源请求来临时,PHP-FPM调用CGI进程处理该请求,CGI进程调用zend虚拟机,处理承载动态请求的php文件,处理完成后调用存储设备上的资源回应给php-fpm
cgi模块与http协议结合
WEB服务器的一次动态资源请求处理过程
1、客户端通过浏览器发送请求,浏览器通过http协议向web服务器发送请求报文;
报文通过TCP/IP协议传送过程:
在进行通信之前,先通过三次握手与web服务器实现连接;
请求报文在应用层通过端口实现不同应用程序间的通信,在传输层通过tcp或udp协议实现报文的传输,在网络层通过IP协议实现报文的路由转发,在网络接口层实现网络设备的选择,在每一层都加上数据报文头部进行封装,在到达目标后进程解封装从而实现数据报文的传送
2、web服务器通过http协议接收到该请求报文,发现是动态资源请求,无法处理该请求,把动态资源的请求转发给CGI协议处理;
3、php-cgi是通过php语言编写对cgi协议的实现(无论任何一种语言,只要遵循CGI协议规范进行编写,都可以被CGI进行调用,也即是说只要遵循该协议规范,可以由任何一种语言实现),
由于php-cgi工作模式的不同,其实现方式也不同
(1)通过最基本的cgi模式方式实现,当动态资源请求到达时,临时启用一个cgi进程,转发要处理的请求,处理完毕,进程自动销毁;在启用第二个进程处理第二个请求,这样的处理效率及其低下
以下两种属于对cgi的升级处理方式
(2)把php-cgi当做httpd协议的一个模块实现,在编译时把该模块加入http协议中,启用http协议时,该模块自动启用,开启cgi进程,等待动态资源请求,当动态资源请求来临时,直接通过php-cgi模块处理该请求,无需临时启动cgi进程。
但由于http协议加载了此模块,一旦启用该模块,无论是否使用该模块(当请求的时静态资源时,无需动态资源解析就是用不到该模块),都会存在于每个进程中,这样就大大浪费了内存空间
(3)通过php-fpm,把fastcgi协议与http协议分离,即http协议处理静态资源请求,所有的动态资源请求全部转发到php-fpm服务器,这样就实现了动静资源请求分别处理的功能,能够减轻服务器的压力,提升服务的处理效率,该模式适合于高负载场景。同样的,这也是模块化的一种实现
4、这里以php-fpm为例:当php-fpm接收到动态资源请求时,启用cgi进程,cgi进程调用并初始化zend虚拟机,zend虚拟机对cgi脚本进行词法解析,语法分析,并编译为opcode执行,调用存储设备上的资源
PHP简介
PHP配置
PHP的加速器
php的加速器:基于PHP的特殊扩展机制如opcode缓存扩展也可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的
常见的php加速器有:
1、APC (Alternative PHP Cache)
遵循PHP License的开源框架,PHP opcode缓存加速器,目前的版本不适用于PHP 5.4
项目地址:http://pecl.php.net/package/APC
2、eAccelerator
源于Turck MMCache,早期的版本包含了一个PHP encoder和PHP loader,目前encoder已经不在支持。
项目地址http://eaccelerator.net/
3、XCache
快速而且稳定的PHP opcode缓存,经过严格测试且被大量用于生产环境。
项目地址:http://xcache.lighttpd.net/,收录EPEL源
4、Zend Optimizer和Zend Guard Loader
Zend Optimizer并非一个opcode加速器,它是由Zend Technologies为PHP5.2及以前的版本提供的一个免费、闭源的PHP扩展,其能够运行由Zend Guard生成的加密的PHP代码或模糊代码。而Zend Guard Loader则是专为PHP5.3提供的类似于Zend Optimizer功能的扩展。
项目地址:http://www.zend.com/en/products/guard/runtime-decoders
5、NuSphere PhpExpress
NuSphere的一款开源PHP加速器,它支持装载通过NuSphere PHP Encoder编码的PHP程序文件,并能够实现对常规PHP文件的执行加速。
项目地址:http://www.nusphere.com/products/phpexpress.html
知识扩展:
cgi模块与Xcache结合
php的加速器
基于PHP的特殊扩展机制如opcode缓存扩展也可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的
php-cgi模块化+xcache
可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能
php-fpm+xcache
由于动静资源请求独立运行,因此该模式处理动态资源请求速度比模块化方式速度更快,性能更好
cgi模块与数据库结合
cgi协议无论哪种工作模式,在运行时总是要读取或存储数据,而数据库与cgi结合的方式使得数据存储能够独立于程序存储,如果程序出现问题则不会波及到数据,这样不仅能够提升数据读取和存储速度还保证了数据的安全性
CGI协议相当于一个中间层,它承载了http协议(http通过cgi协议处理动态资源请求),mysql数据库(实现了cgi协议数据的读取和存储),以及php(实现对cgi的编写以及cgi的三种工作模式),这样就实现了LAMP,是基于三层架构实现的(web服务器,cgi协议服务器,mysql存储服务器)
快速部署LAMP
安装LAMP
格式1
Hello world!"
?>
格式2
php测试代码
close();
?>
query('SELECT user,hostfrom user') as $row) {
print_r($row);
}
$dbh= null;
} catch (PDOException$e) {
print "Error!: " . $e->getMessage() . "
";
die();
}
?>
常见LAMP应用
部署phpMyadmin
方法1、数据库安装在本地(即和http协议在同一台设备上)
yum -y install httpd mariadb-server php php-mysql
systemctl start httpd
systemctl start mariadb
mysql_secure_installation
或者set password for 'root'@'localhost' = password('centos123456'); 给本地数据库添加root密码
下载:https://www.phpmyadmin.net/downloads/
这里以下载到/root目录下为例
mkdir /var/www/html/pma
tar xvf phpMyAdmin-4.0.10.20-all-languages.tar.xz
cp /root/phpMyAdmin-4.0.10.20-all-languages/* /var/www/html/pma/
cd /var/www/html/pma/
cp config.sample.inc.php config.inc.php
yum -y install php-mbstring
systemctl reload httpd
方法2、数据库安装在其他服务器(假设地址为:192.168.32.129),在以上步骤的基础上做以下修改
vim /var/www/html/pmaconfig.inc.php
$cfg['blowfish_secret'] = '123456'; 更改密码
$cfg['Servers'][$i]['host'] = '192.168.32.129'; 指向数据库服务器的ip地址
为数据库设置登录密码并进行授权
GRANT ALL ON *.* to 'mysql1'@'192.168.32.130' IDENTIFIED BY 'centos123456'
注意:我们这里为了试验进行了最大权限的授权,在实际中要根据需求对数据库用户进行授权
实现LAMP应用博客系统wordpress
实验环境:
mysql服务器:192.168.32.129
apache服务器:192.168.32.130
安装相关软件
yun -y install httpd php-mysql php mariadb-server
(1)下载地址:
官网:https://cn.wordpress.org/
(2)解压缩WordPress博客程序到网页站点目录下
cd /root
unzip wordpress-4.3.1-zh_CN.zip
cp wordpress /var/www/html
(3)新建wpdb库和wpuser用户(数据库在本地和在其他主机均可)
mysql
mysql> create database wpdb;
mysql> grant all privileges on wpdb.* to wpuser@'%' identified by "wppass";
(4)网站文件配置
cd /var/www/html/wordpress
cp wp-config-sample.php wp-config.php
vim wp-config.php
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wpdb');
/** MySQL数据库用户名 */
define('DB_USER', 'wpuser');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'centos123456');
/** MySQL主机 */
define('DB_HOST', '192.168.32.129');
(5)打开http://192.168.32.130/wordpress进行页面安装
注意wordpress目录权限
Setfacl –R –m u:apache:rwx wordpress
(6)对搭建好的网站进行压力测试,查看其并发能力
ab -c 10 -n 100 192.168.32.130/wordpress/
CentOS7编译php-xcache加速访问
官网:http://xcache.lighttpd.net/wiki/ReleaseArchive
安装方法
(1)rpm包:来自epel源
(2)编译安装
以编译安装为例:
yum -y install php-devel
下载并解压缩xcache-3.2.0.tar.bz2
phpize 生成编译环境
cd xcache-3.2.0
./configure --enable-xcache--with-php-config=/usr/bin/php-config
make && make install
准备相关文件
cp xcache.ini/etc/php.d/
重启http服务
systemctl restart httpd.service
配置fastcgi
php配置
配置文件:/etc/php.ini,/etc/php.d/*.ini
Module模式下,重启Httpd服务
FastCGI模式下,重启php-fpm服务
配置文件格式
[foo]:Section Header
Directive=value
注释符:# 纯粹的注释信息
; 用于注释可启动的指令
说明:在较新的版本中,已经完全使用”;”进行注释
php.ini核心配置的详细说明:http://php.net/manual/zh/ini.core.php
Php.ini配置选项列表:http://php.net/manual/zh/ini.list.php
fcgi配置
fcgi服务配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
连接池:
pm = static|dynamic
static:固定数量的子进程;pm.max_children
dynamic:子进程数量以动态模式管理
pm.max_children
pm.start_servers
pm.min_spare_servers
pm.max_spare_servers
pm.max_requests= 500
确保运行php-fpm进程的用户对session目录有读写权限
mkdir /var/lib/php/session
chown apache.apache /var/lib/php/session
主要配置步骤如下:
(1) 配置httpd,添加/etc/httpd/conf.d/fcgi.conf配置文件,内容类似
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
注意:在HTTPD服务器上必须启用proxy_fcgi_module模块,充当PHP客户端
httpd –M |grep fcgi
cat /etc/httpd/conf.modules.d/00-proxy.conf
(2) 虚拟主机配置
vim /etc/httpd/conf.d/vhosts.conf
DirectoryIndex index.php
ServerNam ewww.b.net
DocumentRoot /apps/vhosts/b.net
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1
Options None
AllowOverride None
Require all granted
CentOS7安装LAMP(PHP-FPM模式)
实验环境:
客户端:192.168.32.128
apache服务器:192.168.32.129
fastcgi服务器:192.168.32.130
数据库服务器:192.168.32.131
配置如下:
(1)首先四台主机关闭防火墙和selinux
(2)fastcgi服务器:
yun -y install php-fpm php-mysql
安装php-mysql,使fastcgi自动关联数据库
cat /etc/php.d/mysql.ini
[root@centos7 website]# cat /etc/php.d/mysql.ini
; Enable mysql extension module
extension=mysql.so
PHP-FPM常见配置
daemonize= no 是否将程序运行在后台
listen = 127.0.0.1:9000 FPM监听地址
listen.backlog= -1 等待队列的长度-1表示无限制
listen.allowed_clients= 127.0.0.1 //仅允许哪些主机访问
pm = dynamic
PM是动态运行还是静态运行
static 固定数量的子进程,pm.max_childen
dynamic子进程数据以动态模式管理
pm.start_servers
pm.min_spare_servers
pm.max_spare_servers
pm.max_requests= 500
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session 设置session存放位置
mkdir /data/website
创建php测试程序与数据库进行关联(调用函数,如果能连接数据库返回ok,如果连接不上数据库,返回failure)
vim /data/website/index.php
监听本地9000端口,允许apache服务器充当客户端发送动态资源(.php文件)请求过来
vim /etc/php-fpm.d/www.conf
listen = 192.168.32.130:9000
listen.allowed_clients = 192.168.32.129
(2)apache服务器:
安装http
yum -y install httpd
把apache与fastcgi关联起来
vim /etc/httpd/conf.d/fastcgi.conf
ProxyRequests Off 关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.32.130:9000/data/website/$1 开启反向代理,把所有.php文件的请求全部范发到fastcgi服务器192.168.32.130处理
查看Httpdmod_fcgi模块是否加载
httpd -M | grep fcgi
proxy_fcgi_module(shared)
(4)数据库服务器:
yum -y install mariadb-server
mysql_secure_installation 运行安全脚本(如果做实验此步骤可省略)
[root@centos7-3 ~]# mysql
MariaDB [(none)]> create database testdb; 创建测试数据库
MariaDB [(none)]> grant all on testdb.* to 'testuser'@'192.168.32.%' identified by 'centos123456'; 给fastcgi服务器创建数据库用户并授权
(5)客户端服务器
如果apache服务器配置基于FQDN的虚拟主机,则需要配置域名解析
在/etc/hosts文件写入ip地址和域名的对应关系或者在网络配置文件中指定DNS的地址
实验:搭建wordpress(PHP-FPM模式)
客户端服务器:192.168.32.128
apache服务器:192.168.32.129
fastcgi服务器:192.168.32.130
数据库服务器:192.168.32.131
(1)apache服务器:192.168.32.129
创建基于FQDN模式的虚拟主机
vim /etc/httpd/conf.d/test.conf
DirectoryIndex index.php
ServerName www.wordpress.com
DocumentRoot /data/wordpress/
ProxyRequests Off 关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.32.131:9000/data/wordpress/$1 开启发现代理,把动态请求发送到fastcgi服务器进行处理
Require all granted
下载软件包并解压
官网:https://cn.wordpress.org/
tar xf wordpress-4.9.4-zh_CN.tar.gz -C /data
(2)fastcgi服务器:192.168.32.130
yum -y insatll php-fpm php-mysql
vim /etc/php-fpm.d/www.conf
listen = 9000 监听本地所有ip地址的9000端口
listen.allowed_clients = 192.168.32.129 允许apache服务器作为客户端并进行监听
下载软件包并解压
官网:https://cn.wordpress.org/
tar xf wordpress-4.9.4-zh_CN.tar.gz -C /data
cd /data/wordpress
cp wp-config-sample.php wp-config.php
vim wp-config.php
define('DB_NAME', 'job');
/** MySQL数据库用户名 */
define('DB_USER', 'job');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'job');
/** MySQL主机 */
define('DB_HOST', '192.168.32.131');
(3)数据库服务器:
vim /etc/my.conf.d/server.conf
[mysqld]
skip_name_resolve 禁止ip地址反向解析
创建数据库和用户并授权
mysql
>create database job;
>grant all on job.* to 'job'@'192.168.32.129' identified by 'job';
(4)在客户端登录测试
客户端配置域名解析
vim /etc/hosts
192.168.32.129 www.wordpress.com
注意:这种配置方法临时有效,永久有效需要在网络配置文件指定DNS
注意:在测试时,由于虚拟主机使用的是基于FQDN方式创建,因此必须使用域名进行测试,不能使用ip地址测试(ip地址无法通过http协议传输数据报文)
浏览器登录http://www.wordpress.com
排错:当出现数据库连接失败情况时
删除wp-config.php文件,先登录apache服务器地址,提示登录错误,这是因为缺少wp-config.php文件指向数据库;此时再次建立wp-config.php文件,更改改配置文件再次登录
在centos7上编译安装LAMP:
mairadb:通用二进制格式,mariadb-5.5.56
httpd:编译安装,httpd-2.4.25
php5:编译安装,php-5.6.30
phpMyAdmin:安装phpMyAdmin-4.4.15.10-all-languages
Xcache:编译安装xcache-3.2.0
php5.4依赖于mariadb-devel包
顺序:mariadb-->httpd-->php
1、二进制安装mariadb
下载并解压mariadb源码包
下载地址:https://downloads.mariadb.org/
tar xvfmariadb-5.5-46-linux-x86_64.tar.gz -C /usr/local
准备相关配置文件
cd /usr/local
ls -sv mariadb-5.5.46-linux-x86_64 mysql #创建软链接,便于版本更新
cd mysql
chown -R root.mysql ./* #更改文件权限
mkdir /mydata/data -p #创建数据存放目录
chown -R mysql.mysql /mydata/data #更改权限
mkdir /etc/mysql #创建配置文件目录
复制模板文件为主配置文件
cp support-files/my-large.cnf /etc/mysql/my.cnf
vim /etc/mysql/my.cnf
[mysqld]加三行
datadir=/mydata/data
innodb_file_per_table= ON
skip_name_resolve= ON
配置环境变量
vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin/:$PATH
编译安装mariadb
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --datadir=/mydata/data
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
设置为开机自启动
chkconfig --add mysqld
启动服务
service mysqld start
2、编译安装httpd-2.4
yum install pcre-devel apr-devel apr-util-devel openssl-devel
./configure --prefix=/app/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork \
--with-included-apr
make -j 4 && make install #-j 指定使用cpu核心数,根据cpu核心数而定
3、编译安装php
(1)编译安装php-5.6
相关依赖包:
libxml2-devel bzip2-devel libmcrypt-devel(epel)
编译安装:
./configure --prefix=/app/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-png-dir --with-jpeg-dir --with-freetype-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/app/httpd24/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
make -j 4 && make install #-j 指定使用cpu核心数,根据cpu核心数而定
(2)编译安装php-7.1.7
编译安装
./configure --prefix=/app/php --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/app/httpd24/bin/apxs --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --disable-fileinfo
make -j 4 && make install #-j 指定使用cpu核心数,根据cpu核心数而定
注意:php-7.0以上版本使用--enable-mysqlnd --with-mysqli=mysqlnd ,原--with-mysql不再支持
为php提供配置文件
cp php.ini-production /etc/php.ini
编辑apache配置文件httpd.conf,以使apache支持php
vim /etc/httpd24/conf/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
apachectl restart
CentOS7编译安装FPM模式的LAMP
1、编译安装
tar xvf php-7.1.7.tar.bz2
cd php-7.1.7/
./configure --prefix=/app/php \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-openssl \
--with-pdo-mysql=mysqlnd \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-maintainer-zts \
--disable-fileinfo
2、准备php-fpm相关配置文件
cp php.ini-production /etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
cd /app/php/etc
cp php-fpm.conf.defaultphp-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
启动服务
service php-fpm start
3、配置httpd支持php
vim /app/httpd24/conf/httpd.conf
取消下面两行的注释
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
修改下面行
DirectoryIndex index.php index.html
加下面四行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1
CentOS6编译安装FPM模式的LAMP
在centos6上编译安装LAMP:
mairadb:通用二进制格式,mariadb-5.5.56
httpd:编译安装,httpd-2.4.27
php5:编译安装,php-5.6.30
Wordpress: 安装wordpress-4.8-zh_CN.tar.gz
Xcache:编译安装xcache-3.2.0
php5.4依赖于mariadb-devel包
实现顺序:mariadb-->httpd-->php
1、编译httpd和二进制安装mariadb
安装相关依赖包
bzip2-devel libxml2-devel libmcrypt-devel(epel源)
2、编译安装php
cd php-5.6.30/
./configure --prefix=/app/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-di r--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
make -j 4 && make install
3、实现php的配置文件和服务脚本
mkdir /etc/php5 /etc/php5.d/
cd php-5.6.30/
cp php.ini-production /etc/php5/php.ini
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 --list php-fpm
4、编辑php配置文件
cd /app/php5/etc
cp php-fpm.conf.default php-fpm.conf
vim /app/php5/etc/php-fpm.conf
pm.max_children= 50
pm.start_servers= 5
pm.min_spare_servers= 2
pm.max_spare_servers= 5 和pm.start_servers一致
pid= /app/php5/var/run/php-fpm.pid
重启服务
service php-fpm restart
5、修改httpd24的配置文件
vim /app/apache24/conf/httpd.conf
说明:启用httpd的相关模块
在Apache httpd2.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 application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改为:
DirectoryIndex index.php index.html
加下面两行
ProxyRequests Off 关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1
重启服务
service httpd24 restart
6、测试
vim /app/httpd24/htdocs/index.php
如下: