FreeBSD使用FastCGI mod_fcgi模块配置Apache 2.2 PHP

时间:2020-01-09 10:38:28  来源:igfitidea点击:

我想从mod_php5切换到mod_fastcgi。
我将使用FreeBSD 7版本以及以下软件:

  • Apache 2.2
  • PHP作为mod_php5
  • MySQL DB 5.1.23服务器

如何将PHP配置为FastCGI服务器?

mod_fcgid具有新的进程管理策略,该策略专注于减少fastcgi服务器的数量,并尽快踢出损坏的fastcgi服务器。
它是Apache模块mod_fastcgi的二进制兼容性替代方案;因此,您现有的fastcgi程序无需重新编译。

mod_fcgid支持suEXEC。

为什么将PHP5作为mod_fcgi/mod_fastcgi运行?

FastCGI与mod_php5相比具有一些重要的优势:

  • 您可以进行用户级别分离。您可以为每个用户启用配额。通过进程和CPU消耗限制用户。
  • 可以对每个用户进行chroot安全性调用
  • 根据几份报告,fastcgi的运行速度比mod_php和cgi模式要快得多。

步骤1:安装mod_fcgid

确保您的端口是最新的:

# portsnap fetch update

安装mod_fcgid:

# cd /usr/ports/www/mod_fcgid

# make install clean

确保php支持FastCGI

确保php-cgi二进制文件存在,并且使用fastcgi支持对其进行编译:

# cd /usr/ports/lang/php5

# make showconfig | grep -i FASTCGI

输出:

FASTCGI=on "Enable fastcgi support (CGI only)"

测试fastcgi支持的另一种方法,执行:

# /usr/local/bin/php-cgi -v

输出:

PHP 5.2.5 with Suhosin-Patch 0.9.6.2 (cgi-fcgi) (built: Mar  6 2008 09:15:41)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

如果看不到单词cgi-fcgi,请通过访问/usr/ports/lang/php5重新编译具有fastcgi支持的php。

# cd /usr/ports/lang/php5

# make config

# make install clean

步骤3:加载mod_fcgi模块

打开位于/usr/local/etc/apache22 /目录中的httpd.conf文件:

# vi /usr/local/etc/apache22/httpd.conf

加载mod_fcgi模块:

LoadModule fcgid_module libexec/apache22/mod_fcgid.so

配置mod_fcgi

<IfModule mod_fcgid.c>
    AddHandler fcgid-script .fcgi
    FCGIWrapper /usr/local/bin/php-cgi .php
</IfModule>

找到您的DocumentRoot目录配置选项,内容如下:

<Directory "/usr/local/www/apache22/data">

追加以下两行:

SetHandler fcgid-script

FCGIWrapper /usr/local/bin/php-cgi .php

Options ExecCGI

最后,配置应如下所示:

# This should be changed to whatever you set DocumentRoot to.
<Directory "/usr/local/www/apache22/data">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    SetHandler fcgid-script
    FCGIWrapper /usr/local/bin/php-cgi .php
    Options ExecCGI
  Allow from all
</Directory>

步骤4:停用mod_php5

查找如下所示的行:

LoadModule php5_module        libexec/apache22/libphp5.so

注释掉一行:

#LoadModule php5_module        libexec/apache22/libphp5.so

还要确保存在以下两行(MIME类型):

AddType application/x-httpd-php .php

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

保存并关闭文件。

步骤5:重新启动Apache22

最后,重新启动apache Web服务器:

# /usr/local/etc/rc.d/apache22 restart

步骤5:测试mod_fcgi

使用以下小程序来验证mod_fcgi是否正常工作:

<?php
phpinfo();
?>