一、mod_fcgid配置说明
1、首先下载mod_fcgid-2.3.6-win32-x86.zip,Linux版本的也有:http://httpd.apache.org/download.cgi#mod_fcgid 将解压的相关文件复制到apache的“modules”目录下。
2、打开apache的配置文件“httpd.conf”,文件最后加入如下配置:
LoadModule fcgid_module modules/mod_fcgid.so
AddHandler fcgid-script .fcgi .php
#php.ini的存放目录
FcgidInitialEnv PHPRC “D:/Server/PHP/php-5.3.6-nts”
# 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
#php-cgi每个进程的最大请求数
FcgidMaxRequestsPerProcess 1000
#php-cgi最大的进程数
FcgidMaxProcesses 3
#最大执行时间
FcgidIOTimeout 120
FcgidIdleTimeout 120
#php-cgi的路径
FcgidWrapper “D:/Server/PHP/php-5.3.6-nts/php-cgi.exe” .php
AddType application/x-httpd-php .php
3、告诉APACHE执行方式。修改你的配置如下:
<Directory “D:/Web”>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
4、重启apache。
5、如果配置没错的话,你运行phpinfo.php可以看到有如下的输出信息:
Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o mod_fcgid/2.3.6
二、mod_fcgid概念说明以及mod_fastcgi和mod_fcgid的区别
mod_fcgid是一个跟mod_fastcgi二进制兼容的Apache module。
原来的mod_fastcgi因为实现方式的限制,所以可能会创建了很多不必要的进程,而实际上只需要更少的进程就能处理同样的请求。 mod_fastcgi的另外一个问题是每一个CGI的多个进程都共享同一个管道文件,所有到同一个fastcgi的通讯都通过这个同名的管道文件进行, 这样当出现通讯错误的时候,根本不知道正在通讯的是哪一个fastcgi,于是也没有办法将这个有问题的进程杀死。
mod_fcgid尝试使用共享内存来解决这个问题。共享内存里面有当前每个fastcgi进程的信息(包括进程号,进程使用的管道文件名等),当 每次尝试请求fastcgi工作的时候,Apache将会首先在共享内存里面查询,只有在共享内存里面发现确实没有足够的fastcgi进程了,才会创建 新的进程,这样可以保证当前创建的进程数量刚好能够处理客户的请求。另外,由于每一个fastcgi进程使用不同名称的管道文件,所以可以在通讯失败的时 候知道到底哪个fastcgi进程有问题,而能够尽早的将其剔除。
三、mod_fcgid程序实现的目标
1、跟mod_fastcgi二进制兼容
只要在Apache中用mod_fcgid替换了mod_fastcgi,就能工作。原来的fastcgi程序不用重新编译,立即可以工作。
2、更严格的控制进程的创建
Apache中每一个request handler都能通过共享内存知道当前系统fastcgi运行的情况,这样可以防止过度的创建fastcgi进程,无谓的消耗系统的资源。
3、简单清晰的进程创建速度控制策略
每一个fastcgi都会维护一个计数器,这个计数器在程序创建和程序结束的时候都会增加,而这个计数器每秒会减1,直到0。当计数器的值高于某个阀值的时候,程序就会停止创建,直到计数器的值回落。这样既可以保证在请求突然增多的时候能够快速反应(特别是Apache刚启动,需要大量创建程序的时 候),也能保证当fastcgi程序有问题,不断重起的时候,重起的速度不会过高而消耗过多的系统资源。
4、自动检测出有问题的进程
因为每个fastcgi使用自己特定的管道文件,所以在通讯错误的时候可以轻易知道哪一个程序出现问题,而尽早的将其剔除。
5、可移植性
遵照Apache2的习惯,所有可移植的代码都放到一起,所有不可移植的代码都在arch目录下分开存放。当前已经测试过的系统包括 Linux , FreeBSD(已经包含入FreeBSD4和FreeBSD5的port中), Solaris, Windows 2000.
6、支持FastCGI方式运行的PHP
可以直接支持以FastCGI方式运行的PHP。因为PHP现在还不能保证所有的扩展代码都是线程安全的,所以并不建议在Apache2的线程模式 下使用mod_php。而以FastCGI方式运行的PHP则是其中一个解决办法。另外,使用mod_fcgi还可以在不修改任何PHP代码的情况下,获得数据库连接池的功能,大大减少PHP进程到数据库的连接。
本文参考了http://fuzzytolerance.info/code/apache-mod_fcgid-and-php-on-windows/一文,套用原文作者的话,t’s tricky to set up the first time, but mod_fcgid is the best way to run PHP on Apache I’ve found。
分享到:
相关推荐
Apache mod_fcgid 是一个非常重要的模块,它允许Apache HTTP Server与FastCGI应用程序进行通信,从而提升服务器性能和响应速度。FastCGI是一种常驻型的CGI(Common Gateway Interface)实现,它解决了传统CGI模式下...
Apache2.2 + FastCGI + gSOAP搭建 WebService工具,内含: 1、fcgi-2.4.1-SNAP-0910052249.tar.gz 2、mod_fcgid-2.3.9-crlf.zip 3、httpd-2.2.25-win32-x86-openssl-0.9.8y.msi
`mod_fcgid`在Apache中的作用类似于`mod_php`或`mod_perl`,但它是为运行任意FastCGI应用而设计的,不仅仅是PHP。 **FastCGI概述** FastCGI是Fast Common Gateway Interface的缩写,它是一种语言无关的、可伸缩...
描述 "windows 下 apache 开启fcgid模式 的mod_fastcgi.dll" 指出,此zip文件包含的是Apache服务器在Windows环境下启用FastCGI模式所需的动态链接库(mod_fastcgi.dll)。FastCGI是一种让Web服务器与外部进程(如PHP...
标题中的"mod_fcgid-2.3.10-win32-VS16_javascript_socket_MOD_"提及的是一个特定版本的Apache模块mod_fcgid的Windows 32位构建,该版本是使用Visual Studio 16(可能是VS2019)编译的,并且与JavaScript Socket编程...
本文主要介绍了在 Windows 系统环境下如何安装与配置 Apache、FastCGI 和 PHP,使之能够协同工作并支持 PHP 应用程序的运行。通过本文的学习,您将能够掌握在 Windows 平台上搭建 LAMP 或 WAMP (Windows + Apache + ...
Apache mod_fcgid 用于 Apache HTTP Server 的 FastCGI 模块作为 2.3.9 发布。
mod_fcgid-2.3.9 x64 适用于Windows平台Apache 2.4 亲测可用
32位Apache FCGID模块,已确认切实可用,验证Apache版本:2.4
Apache2.4 Win64位 配置PHP: #----------------Fastcgi-------------------------------- LoadModule fcgid_module modules/mod_fcgid.so <IfModule mod_fcgid.c> FcgidMaxRequestsPerProcess 1000 ...
要启用FastCGI,我们首先需要安装FastCGI的Apache模块,通常是`mod_fcgid`。在Debian/Ubuntu系统中,可以通过`sudo apt-get install libapache2-mod-fcgid`命令安装;在CentOS/RHEL系统中,可以使用`sudo yum ...
标题中的"mod_fcgid-2.3.10-win32-VS16_javascript_socket_MOD_源码.rar"指示我们关注的是一个名为mod_fcgid的软件模块的源代码,版本为2.3.10,适配于Windows 32位系统,并且与Visual Studio 2016(VS16)开发环境...
在Apache服务器中,mod_fcgid是一个非常重要的模块,它作为mod_fastcgi的二进制兼容性替代品,提供了更高效、更稳定的FastCGI处理机制。FastCGI(Fast Common Gateway Interface)是一种让Web服务器与外部应用程序...
mod_fcgid.so
Win环境下安装Apache2+fastcgi+php5(non thread safe)+MySql5+ZendGuardLoader
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
Apache FastCGI是一种高效的方法,用于在Apache web服务器上运行动态内容,比如PHP、Perl或Python等脚本语言。FastCGI是通用网关接口(CGI)的一个更快速、更持久的版本,旨在减少对资源的需求并提高性能。本文将...