十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
建站服务器
18.1 lamp简介
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、成都做网站、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的梓潼网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!有了前面学习的知识的铺垫,今天可以来学习下第一个常用的web架构了。
所谓lamp,其实就是由Linux+Apache+mysql/MariaDB+Php/Perl/Python的一组动态网站或者服务器的开源软件,除Linux外其它各部件本身都是各自独立的程序,但是因为经常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
LAMP指的是Linux(操作系统)、Apache(HTTP服务器)、Mysql(也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的第一个字母,一般用来建立web应用平台
18.2 Web服务器工作流程
在说lamp架构平台的搭建前,我们先来了解下什么是CGI,什么是FastCGI,什么是......
web服务器的资源分为两种,静态资源和动态资源。
所谓静态资源就是指静态内容,客户端从服务器获得的资源的表现形式与原文件相同。可以简单的理解为就是直接存储于文件系统中的资源
动态资源则通常是程序文件,需要在服务器执行之后,将执行的结果返回给客户端。
那么web服务器如何执行程序并将结果返回给客户端呢?下面通过一张图来说明一下web服务器如何处理客户端的请求
如上图所示
阶段①显示的是httpd服务器(即apache)和php服务器通过FastCGI协议进行通信,且php作为独立的服务进程运行
阶段②显示的是php程序和MYSQL数据库间通过mysql协议进行通信。php与mysql本没有什么联系,但是由Php语言写成的程序可以与mysql进行数据交互。同理perl和python写的程序也可以与mysql数据库进行交互
18.2.1 cgi与fastcgi
上图阶段①中提到了FastCGI,下面我们来了解下CGI与FastCGI。
CGI(Common Gateway Interface,通用网关接口),CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。
FastCGI(Fast Common Gateway Interface)是CGI的改良版,CGI是通过启用一个解释器进程来处理每个请求,耗时且耗资源,而FastCGI则是通过master-worker形式来处理每个请求,即启动一个master主进程,然后根据配置启动几个worker进程,当请求进来时,master会从worker进程中选择一个去处理请求,这样就避免了重复的生成和杀死进程带来的频繁cpu上下文切换而导致耗时
18.2.2 httpd与php结合的方式
httpd与php结合的方式有以下三种:
a) modules:php将以httpd的扩展模块形式存在,需要加载动态资源时,httpd可以直接通过php模块来加工资源并返回给客户端
httpd prefork:libphp5.so(多进程模型的php)
httpd event or worker:libphp5-zts.so(线程模型的php)
b) CGI:httpd需要加载动态资源时,通过CGI与php解释器联系,获得php执行的结果,此时httpd负责与php连接的建立和断开等
c) FastCGI:利用php-fpm机制,启动为服务进程,php自行运行为一个服务,https通过socket与php通信
较于CGI方式,FastCGI更为常用,很少有人使用CGI方式来加载动态资源
18.2.3 web工作流程
下面来通过上面的图说明一下web的工作流程
客户端通过http协议请求web服务器资源,web资源收到请求后判断客户端请求的资源是静态资源或是动态资源,若是静态资源则直接从本地文件系统取之返回给客户端。否则若为动态资源则通过FastCGI协议与php服务器联系,通过CGI程序的master进程调度worker进程来执行程序以获得客户端请求的动态资源,并将执行的结果通过FastCGI协议返回给httpd服务器,httpd服务器收到php的执行结果后将其封装为http响应报文响应给客户端。在执行程序获取动态资源时若需要获得数据库中的资源时,由Php服务器通过mysql协议与MySQL/MariaDB服务器交互,取之而后返回给httpd,httpd将从php服务器收到的执行结果封装成http响应报文响应给客户端。
18.3 lamp平台构建
18.3.1 通过yum安装方式构建lamp平台
CentOS7下构建lamp:
要安装的程序包:httpd,php,php-mysql,mariadb-server
注意:php要求httpd使用prefork MPM
yum-yinstallhttpdphpphp-mysqlmariadb-server systemctlstarthttpd.service systemctlstartmariadb.service
CentOS6下构建lamp:
要安装的程序包:httpd,php,php-mysql,mysql-server
yum-yinstallhttpdphpphp-mysqlmysql-server servicehttpdstart servicemysqldstart
18.3.2 编译安装lamp
http对fastcgi协议的支持:
a) httpd-2.2:需要额外安装fastcgi模块
wgethttps://mirrors.tuna.tsinghua.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.bz2 tarxfmod_fcgid-2.3.9.tar.bz2 cdmod_fcgid-2.3.9 ./configure.apxs make makeinstall
b) httpd-2.4:自带fastcgi模块
安装次序:httpd,MariaDB,php
安装httpd-2.2:
cd/usr/src wgethttp://mirror.bit.edu.cn/apache//httpd/httpd-2.2.32.tar.bz2 tarxfhttpd-2.2.32.tar.bz2 cdhttpd-2.2.32 ./configure--prefix=/usr/local/httpd make makeinstall echo\'PATH=/usr/local/httpd/bin:$PATH\'>/etc/profile.d/httpd.sh source/etc/profile.d/httpd.sh ln-s/usr/local/httpd/include//usr/include/httpd echo\'MANPATH/usr/local/httpd/man\'>>/etc/man.config apachectlstart
安装MariaDB:
cd/usr/src wgethttp://ftpmirror.gnu.org/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2 tarxfgcc-5.2.0.tar.bz2 cdgcc-5.2.0 ./contrib/download_prerequisites yum-yinstallgcc-c++glibc-staticgcc ./configure--prefix=/usr/local/gcc--enable-bootstrap--enable-checking=release--enable-languages=c,c++--disable-multilib make-j$(cat/proc/cpuinfo|grep\'processor\'|wc-l) makeinstall echo\'exportPATH=/usr/local/gcc/bin:$PATH\'>/etc/profile.d/gcc.sh ./etc/profile.d/gcc.sh ln-sv/usr/local/gcc/include//usr/include/gcc echo\'/usr/local/gcc/lib64\'>/etc/ld.so.conf.d/gcc.conf echo\'/usr/local/gcc/lib\'>>/etc/ld.so.conf.d/gcc.conf ldconfig-p|grepgcc#验证是否导出头文件 cd/usr/src yuminstall-yncurses-developenssl-developensslcmakemysql-devel wget groupadd-r-g306mysql useradd-r-g306-u306mysql mkdir-pv/data/mydata chown-Rmysql.mysql/data/mydata tarxfmariadb-10.2.6.tar.gz cdmariadb-10.2.6 cmake.-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\\ -DMYSQL_DATADIR=/data/mydata\\ -DSYSCONFDIR=/etc\\ -DWITH_INNOBASE_STORAGE_ENGINE=1\\ -DWITH_ARCHIVE_STORAGE_ENGINE=1\\ -DWITH_BLACKHOLE_STORAGE_ENGINE=1\\ -DWITH_READLINE=1-DWITH_SSL=system\\ -DWITH_ZLIB=system-DWITH_LIBWRAP=0\\ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock\\ -DDEFAULT_CHARSET=utf8\\ -DDEFAULT_COLLATION=utf8_general_ci make-j$(cat/proc/cpuinfo|grep\'processor\'|wc-l) makeinstall
cmake参数说明:
#安装根目录 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql #数据存储目录 -DMYSQL_DATADIR=/data/mydata #UNIXsocket文件 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock #配置文件(my.cnf)目录 -DSYSCONFDIR=/etc #默认字符集 -DDEFAULT_CHARSET=utf8 #默认字符校对 -DDEFAULT_COLLATION=utf8_general_ci #TCP/IP端口 -DMYSQL_TCP_PORT=3306 #*ARCHIVE引擎支持 -DWITH_ARCHIVE_STORAGE_ENGINE=1 #*ARIA引擎支持 -DWITH_ARIA_STORAGE_ENGINE=1 #*BLACKHOLE引擎支持 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 #*FEDERATEDX引擎支持 -DWITH_FEDERATEDX_STORAGE_ENGINE=1 #*PARTITION引擎支持 -DWITH_PARTITION_STORAGE_ENGINE=1 #*PERFSCHEMA引擎支持 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 #*SPHINX引擎支持 -DWITH_SPHINX_STORAGE_ENGINE=1 #*XTRADB支持 -DWITH_XTRADB_STORAGE_ENGINE=1 #*innoDB引擎支持 -DWITH_INNOBASE_STORAGE_ENGINE=1 #*Myisam引擎支持 -DWITH_MYISAM_STORAGE_ENGINE=1 #readline库 -DWITH_READLINE=1 #启用加载本地数据 -DENABLED_LOCAL_INFILE=1 #扩展支持编码(all|utf8,gbk,gb2312|none) -DWITH_EXTRA_CHARSETS=all #扩展字符支持 -DEXTRA_CHARSETS=all #系统传输使用SSL加密 -DWITH_SSL=system #系统传输使用zlib压缩,节约带宽 -DWITH_ZLIB=system #libwrap库 -DWITH_LIBWRAP=0 #运行用户 -DMYSQL_USER=mysql #调试模式 -DWITH_DEBUG=0
配置MariaDB:
cd/usr/local/mysql/ scripts/mysql_install_db--user=mysql--datadir=/data/mydata/ echo\'exportPATH=/usr/local/mysql/bin:$PATH\'>/etc/profile.d/mysql.sh ./etc/profile.d/mysql.sh ln-sv/usr/local/mysql/include//usr/local/include/mysql echo\'/usr/local/mysql/lib\'>/etc/ld.so.conf.d/mysql.conf ldconfig-v ldconfig-p|grepmysql cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld chkconfig--addmysqld chkconfigmysqldon cpsupport-files/my-large.cnf/etc/my.cnf sed-i\'/\\[mysqld\\]/adatadir=/data/mydata\'/etc/my.cnf servicemysqldstart mysql-uroot-e\'GRANTallON*.*TOroot@localhostidentifiedbyqwe123!\'
安装php:详见18.4.3
18.3.3 测试
php程序执行环境:在/var/www/html目录下新建一个index.php文件,其内容如下:
测试php程序与mysql通信:在/var/www/html目录下新建一个index.php文件,其内容如下:
18.4 php
18.4.1 php解释器与MariaDB/mysql交互
php解释器本身无须与MariaDB交互,只有那些用到数据存储系统的程序才需要与数据存储交互。
常见的数据存储系统有以下这些:
a) 文件系统:存储文件
b) SQL:MariaDB,Oracle,MSSQL,...
c) NoSQL:Redis,MongoDB,hbase,...
NewSQL
18.4.2 php配置文件
php官网:www.php.net
php加速器:APC,eAccelerator,Xcache,OPcache
配置文件:/etc/php.ini,/etc/php.d/*.ini
php.ini核心配置选项:http://php.net/manual/zh/ini.core.php
php.ini配置选项列表:http://php.net/manual/zh/ini.list.php
配置文件(php.ini)在php启动时被读取。对于服务器模块版本的php,仅在web服务器启动时读取一次。对于CGI和CLI版本,每次调用都会读取
18.4.3 php编译安装
php编译安装步骤:
a) 解决依赖关系
配置好yum源(系统安装湖及Epel源)后执行如下命令:
yum-ygroupinstall\'DesktopPlatformDevelopment\' yum-yinstallepel-release yum-yinstallbzip2-devellibmcrypt-devellibxml2-devel
b) 编译安装php
cd/usr/src wgethttp://cn2.php.net/distributions/php-5.6.30.tar.xz xz-dphp-5.6.30.tar.xz tarxfphp-5.6.30.tar cdphp-5.6.30 ./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/httpd/bin/apxs--with-mcrypt--with-config-file-path=/etc--with-config-file-scan-dir=/etc/php.d--with-bz2--enable-maintainer-zts--with-mysql=mysqlnd--with-pdo-mysql=mysqlnd--with-mysqli=mysqlnd--enable-opcache
说明:
这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项
如果使用PHP5.3以上版本,为了链接mysql数据库,可以指定mysqlnd,这样在本机就不需要先安装mysql或mysql开发包了
mysqlnd从php5.3开始可用,可以编译时绑定到它(而不用和具体的mysql客户端绑定形成依赖),但从php5.4开始它就是默认设置了
./configure--with-mysql=mysqlnd--with-pdo-mysql=mysqlnd--with-mysqli=mysqlnd make #maketest makeinstall echo\'exportPATH=/usr/local/php/bin:$PATH\'>/etc/profile.d/php.sh ./etc/profile.d/php.sh
c) 为php提供配置文件
cpphp.ini-production/etc/php.ini
d) 编辑apache配置文件httpd.conf使其支持php
添加如下两行:
AddTypeapplication/x-httpd-php.php AddTypeapplication/x-httpd-php-source.phps
定位至DirectoryIndex index.html,修改为:
DirectoryIndexindex.phpindex.html
而后重启httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用
e) 安装xcache,为php加速(php5.5及以下版本)
安装xcache:
cd/usr/src wgethttp://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.bz2 tarxfxcache-3.2.0.tar.bz2 cdxcache-3.2.0 /usr/local/php/bin/phpize ./configure--enable-xcache--with-php-config=/usr/local/php/bin/php-config make&&makeinstall
安装结束时,会出现类似如下行:
Installingsharedextensions:/usr/local/php/lib/php/extensions/no-debug-zts-20131226/
编辑php.ini,整合php和xcache:
首先将xcache提供的样例配置导入php.ini:
catxcache.ini>>/etc/php.ini
说明:xcache.ini文件在xcache的源码目录中
接下来编辑/etc/php.ini,找到zend_extension开头的行,修改为如下行:
zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20131226/xcache.so
注意:如果php.ini文件中有多条zend_extension指令行,需确保此新增的行排在第一位
编辑/etc/php.ini,修改以下内容:
xcache.admin.user=admin #通过opensslpasswd-1PASSWORD命令生成密码,然后在http://xcache.lighttpd.net/demo/cacher/mkpassword.php页面加密密码 xcache.admin.pass=21232f297a57a5a743894a0e4a801fc3 xcache.mmap_path=/tmp/xcache
创建/tmp/xcache文件并赋权:
touch/tmp/xcache chmod777/tmp/xcache
重启httpd:
apachectlrestart
然后在phpinfo页面查看是否有xcache模块
f) OPcache(5.5+版本加速)
PHP5.5.0以后版本自带Opcache加速器,但默认情况下未启用。所以编译的使用我们想要启用该PHP加速器就应该添加参数 : –enable-opcache 来制定。
对于已经编译安装了PHP5.5.0以上版本但当初又没有启用该加速器的用户可以像PHP添加模块一样编译添加。步骤如下:
cd/usr/src/php-5.6.30/ext/opcache /usr/local/php/bin/phpize ./configure--with-php-config=/usr/local/php/bin/php-config make&&makeinstall
最后它会告诉你opcache.so已编译成功,放在/usr/local/php/lib/php/extensions/no-debug-zts-20131226/目录下
编辑php.ini文件,配置opcache
vim /etc/php.ini
修改或添加如下代码并保存退出:
[opcache] zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20131226/opcache.so opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=200 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=20000 opcache.revalidate_freq=1 opcache.fast_shutdown=1
然后重启httpd服务,就可以用php -m命令或在phpinfo界面看到opcache已经开启了
常用的opcache配置介绍:
opcache.enable={0|1}#关闭或开启opcache功能,默认为0(关闭) opcache.enable_cli={0|1}#关闭或开启CLI opcache.memory_consumption=528#opcache可用的内存大小,单位为Mb,根据自身情况而定,决定了总共能够存储多少预编译的PHP代码 opcache.interned_strings_buffer=8#zendoptimizer+暂存池中字符串的占内存总量,单位为MB,推荐设为8 opcache.max_accelerated_files=10000#对多缓存文件限制,缓存的文件数目在200到100000之间,命中率不到100%的话,可以试着提高这个值,推荐设为4000 opcache.revalidate_freq=1#Opcache会在一定时间内去检查文件的修改时间,这里设置检查的时间周期,默认为2,单位为秒。推荐设为60,注意,0是一直检查而不是关闭 opcache.fast_shutdown=1#打开快速关闭,打开这个在PHPRequestShutdown的时候回收内存的速度会提高 opcache.max_wasted_percentage=5#内存“浪费”达到此值对应的百分比,就会发起一个重启调度。 opcache.use_cwd=0#开启这条指令,ZendOptimizer+会自动将当前工作目录的名字追加到脚本键上,以此消除同名文件间的键值命名冲突.关闭这条指令会提升性能,但是会对已存在的应用造成破坏 opcache.validate_timestamps=1#开启文件时间戳验证 opcache.revalidate_path=0#允许或禁止在include_path中进行文件搜索的优化 opcache.save_comments=1#是否保存文件/函数的注释。如果apigen、Doctrine、ZF2、PHPUnit需要文件注释,推荐设为0 opcache.load_comments=1#是否加载文件/函数的注释 opcache.enable_file_override=0#允许覆盖文件存在(file_exists等)的优化特性 opcache.optimization_level=0xffffffff#定义启动多少个优化过程 opcache.inherited_hack=1#启用此Hack可以暂时性的解决”can’tredeclareclass”错误 opcache.dups_fix=0#启用此Hack可以暂时性的解决”can’tredeclareclass”错误 opcache.blacklist_filename=#设置不缓存的黑名单,不缓存指定目录下cache_开头的PHP文件。如/png/www/example.com/public_html/cache/cache_ opcache.max_file_size=0#通过文件大小屏除大文件的缓存.默认情况下所有的文件都会被缓存 opcache.consistency_checks=0#每N次请求检查一次缓存校验.默认值0表示检查被禁用了。由于计算校验值有损性能,这个指令应当紧紧在开发调试的时候开启 opcache.force_restart_timeout=180#从缓存不被访问后,等待多久后(单位为秒)调度重启 opcache.error_log=#错误日志文件名.留空表示使用标准错误输出(stderr) opcache.log_verbosity_level=1#将错误信息写入到服务器(Apache等)日志 opcache.preferred_memory_model=#内存共享的选择后台.留空则是让系统选择 opcache.protect_memory=0#防止共享内存在脚本执行期间被意外写入,仅用于内部调试
g) 启用服务器状态(编辑httpd.conf)
mod_status模块可以让管理员查看服务器的执行状态,它通过一个HTML页面展示了当前服务器的统计数据。这些数据通常包括但不限于:
处于工作状态的worker进程数
空闲状态的worker进程数
每个worker的状态,包括此worker已经响应的请求数,及由此worker发送的内容的字节数
当前服务器总共发送的字节数
服务器自上次启动或重启以来至当前的时长
平均每秒钟响应的请求数、平均每秒钟发送的字节数、平均每个请求所请求内容的字节数
启用状态页面的方法很简单,只需要在主配置文件中添加如下内容即可:
SetHandlerserver-status Allowfromall#httpd-2.2版本使用此条授权 Requireallgranted#httpd-2.4版本使用此条授权 #注意,Allow语句与Require语句二选一,不可同时使用
需要提醒的是,这里的状态信息不应该被所有人随意访问。因此,应该限制仅允许某些特定地址的客户端查看。比如使用Require ip 172.16.0.0/16来限制仅允许指定网段的主机查看些页面。
可以用http://ip/server-status来查看状态界面
18.4.4 配置以fpm方式工作的php
a) 解决依赖关系
yum-ygroupinstallXSoftwareDevelopment
若想让编译的php支持mcrypt扩展,执行以下命令:
yum-yinstalllibmcryptlibmcrypt-develmhashmhash-devel
b) 编译安装php
cd/usr/src wgethttp://cn2.php.net/distributions/php-5.5.38.tar.xz xz-dphp-5.5.38.tar.xz tarxfphp-5.5.38.tar cdphp-5.5.38 ./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--with-config-file-scan-dir=/etc/php.d--with-bz2 make&&makeinstall cpphp.ini-production/etc/php.ini
c) 配置php-fpm
为php-fpm提供SysV init脚本,并将其添加至服务列表:
cpsapi/fpm/init.d.php-fpm/etc/rc.d/init.d/php-fpm chmod+x/etc/rc.d/init.d/php-fpm chkconfig--addphp-fpm chkconfigphp-fpmon
为php-fpm提供配置文件:
cp/usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf
编辑php-fpm的配置文件(/usr/local/php/etc/php-fpm.conf):
配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pm.max_children=50#最多同时提供50个进程提供50个并发服务 pm.start_servers=5#启动时启动5个进程 pm.min_spare_servers=2#最小空闲进程数 pm.max_spare_servers=8#空闲进程数 pid=/usr/local/php/var/run/php-fpm.pid
启动php-fpm:
servicephp-fpmstart
使用如下命令来验证(如果此命令输出中有几个php-fpm进程说明启动成功了):
psaux|grepphp-fpm
默认情况下,fpm监听在127.0.0.1的9000端口,也可以使用如下命令验证其是否已经监听在相应的套接字:
ss-tanlp|grepphp-fpm
18.4.5 配置httpd-2.4.9
httpd-2.4.9配置:
a) 启用httpd的相关模块
在apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩展,因此,这两个模块都要加载,编辑httpd.conf文件,加入以下两行内容:
LoadModuleproxy_modulemodules/mod_proxy.so LoadModuleproxy_fcgi_modulemodules/mod_proxy_fcgi.so
b) 配置虚拟主机支持使用fcgi
在需要使用fcgi的虚拟主机中添加类似如下两行:
ProxyRequestsOff#关闭正向代理 ProxyPassMatch^/(.*\\.php)$fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
如:
ProxyPassMatch^/(.*\\.php)$fcgi://127.0.0.1:9000/var/www/html/idfsoft.com/$1
表示把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI
所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定
示例:
DocumentRoot/var/www/html/idfsoft.com ServerNameidfsoft.com ServerAliaswww.idfsoft.com ProxyRequestsOff ProxyPassMatch^/(.*\\.php)$fcgi://127.0.0.1:9000/var/www/html/idfsoft.com/$1 Optionsnone AllowOverridenone Requireallgranted
c) 编辑apache的配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页
添加如下两行:
AddTypeapplication/x-httpd-php.php AddTypeapplication/x-httpd-php-source.phps
定位至DirectoryIndex index.html,修改为:
DirectoryIndexindex.phpindex.html
而后重启httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用
注意:Apache httpd 2.4以前的版本中,要么把PHP作为apache的模块运行,要么添加一个第三方模块支持PHP-FPM实现