前面的文章分别介绍了Apache和php的安装,这里介绍Apache和php的整合,这里用Apache的mod_fcgid模块调用PHP

安装mod_fcgid模块

给Apache安装mod_fcgid模块

wget http://mirrors.hust.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz

tar -zxvf mod_fcgid-2.3.9.tar.gz 

cd mod_fcgid-2.3.9

APXS=/usr/local/apache/bin/apxs ./configure.apxs

make && make install

其中/usr/local/apache/bin/apxs,是Apache的安装目录下的bin/apxs

配置mod_fcgid

vim /usr/local/apache/conf/httpd.conf

编辑Apache配置文件,查看是否存在下面一行,如果没有则在最后一个LoadModule的下一行手动加上(如果上一步mod_fcgid安装成功的话,应该会自动加上):

LoadModule fcgid_module modules/mod_fcgid.so

同时加‘#’注释掉下面一行(如果存在),当然也可以不注释

LoadModule php7_module        modules/libphp7.so

如果php版本是5.*,那就是php5_module模块。

创建FcgidWrapper的cgi文件

vim /usr/local/php/bin/php-wrapper

加入以下内容保存:

#!/bin/sh
# Set desired PHP_FCGI_* environment variables.
# Example:
# PHP FastCGI processes exit after 500 requests by default.
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS

# Replace with the path to your FastCGI-enabled PHP executable
exec /usr/local/php/bin/php-cgi 

其中/usr/local/php/bin/php-cgi 是php安装目录下的cgi程序

添加可执行权限

chmod +x /usr/local/php/bin/php-wrapper

创建站点

确保Apache配置文件(/usr/local/apache/conf/httpd.conf)里已经include了conf/extra/httpd-vhosts.conf文件,找到

#Include conf/extra/httpd-vhosts.conf

去掉‘#’号

然后,编辑虚拟站点配置文件(httpd-vhosts.conf )

vim /usr/local/apache/conf/extra/httpd-vhosts.conf 

在最后一行创建my-site-fcgi.com的站点

<VirtualHost *:80>
    DocumentRoot "/wwwroot/my-site-fcgi.com/"
    ServerName my-site-fcgi.com 

    # 下面三行是关键
    AddHandler fcgid-script .php
    Options +ExecCGI
    FcgidWrapper /usr/local/php/bin/php-wrapper .php

</VirtualHost>

创建站点目录:

mkdir -p /wwwroot/my-site-fcgi.com/

创建一个php的文件,并输出phpinfo:

cat >/wwwroot/my-site-fcgi.com/index.php<<EOF                  
<?php echo phpinfo();
EOF

修改站点目录文件的权限,和Apache的运行用户相同

chmod -R 755 /wwwroot/my-site-fcgi.com 
chown -R www:www /wwwroot/my-site-fcgi.com 

重启Apache

systemctl restart httpd

验证

域名解析,这里就直接修改hosts文件啦,加入

127.0.0.1 my-site-fcgi.com

然后浏览器访问:http://my-site-fcgi.com/

可以看到Server API已经是:CGI/FastCGI,至此Apache用fastcgi方式调用PHP就完成啦,后面的文章还会继续介绍另一种fastcgi的方式调用php,即已是主流的PHP-FPM。