前面的文章分别介绍了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。