使用mod_fcgid而不是mod_php

我应该怎么做才能使用mod_fcgid而不是mod_php在Ubuntu和CentOS上。 两者之间的主要优点和区别是什么?

mod_php的:

  • 比mod_fcgid快一点
  • 在httpd进程下运行
  • 有权访问apache api(de.php.net/manual/en/ref.apache.php)
  • 共享主机不好,因为所有的域都在同一个用户下运行

mod_fcgid:

  • 脚本在你想要的用户下运行(适合共享主机)
  • 增强安全性
  • 可以运行的不仅仅是php
  • 你可以rund多个php版本,即php4,php5,php5.1,php5.2,php 5.3

在我的共享主机平台上,我使用FastCGI来运行PHP,而不是直接调用它。 他们通过CGI默认运行PHP,而不是模块,所以对我来说只需要在.htaccess文件中join以下内容:

  AddHandler application/myphp .php Action application/myphp /cgi-bin/myphp.fcgi 

接下来,我不得不在我的cgi-bin目录中创buildmyphp.fcgi脚本,其中包含:

 #!/bin/sh # This ensures PHP doesn't try to run it's own # process manager. export PHP_FCGI_CHILDREN=0 # Replace this shell image with a PHP # image. exec /path/to/php -c /path/to/my/php.ini 

这对我来说运行得非常完美,我的托pipe环境在硬件负载平衡器后面的几十台服务器中运行。

cgi =每个请求启动一个进程并将结果返回给客户端fcgi = application(例如Ruby / Django)或解释器(PHP)保持运行,Web服务器转发请求并从中获取响应。

FastCGI几乎总是更快(对于支持它的东西),但是一些非常古老的东西(例如nagios)需要cgi。 只有cgi的真正优势是没有交通脚本的地方cgi应用程序不使用内存,但通常web服务器足够智能closuresFastCGI应用程序一段时间不使用,所以这不是一个真正的优势