2010-12-16 71 views
1

我在Debian Lenny机器上有2个不同的Web服务器。一个正在运行FastCGI(TRAC),另一个正在运行PHP和一些CGI脚本。所以我现在启用了2个Apache2模块(cgi和fcgi)和2个虚拟主机。对于这两个模块同时运行,我没有其他特别的兴趣。Perl CGI或CGI :: Fast在Debian Lenny上的Apache 2.2下

所以我想只保留Apache fastcgi模块运行,因为它看起来更有效率。

您能否确认以下评估是正确的还是正确的?
1 - 我会什么都没有做/更改为TRAC网站(已运行FCGI)
2 - 我将不得不调整其他web服务器虚拟主机与一个处理程序被设置为FastCGI的脚本
3-我会不得不改变perl模块从“使用CGI”到“使用CGI :: Fast”
4-我将能够保留perl现有的其他CGI脚本的其余变化
5-我不需要在Web服务器脚本中使用CGI ::阿帕奇但CGI :: FastCGI的(I/O当前CGI模块)

我希望我的观点是明确的,因为它是所有有点外国对我...

THX

编辑
THX的提示,以函数naveed和J-16,
这里是我做得到它的工作,如果它可以帮助别人:

  • 哼哼,安装CGI :: Fast与CPAN,然后它效果更好..
    Debian上已安装libperl

    perl -MCPAN -e shell 
    cpan> install CGI::Fast 
    
  • 改变文件名从*的CGI到* .fcgi,

  • 包含在由函数naveed下面劝while循环FastCGI的,
  • 设置有关虚拟主机与FastCGI的正确处理程序阿帕奇(见fastcgi doc
  • 启用了Apache的FastCGI模块(a2enmod的FastCGI)和残疾人CGI模块,
  • 检查在Apache设置fastcgi.conf文件,
  • 重新启动Apache的,
  • 检查运行作为FastCGI的一个Apache子过程(PS -afx)
  • 修正了一些脚本的问题,已经在..但在运行时的FastCGI新出现的,如劝(通过检查Apache日志检测到的错误),
  • 编辑:适应文件上传代码为初始脚本没有工作了(还是不明白为什么),所以我不得不用这样一个替换while循环:

    open(FILE,">$upload_dir/$file_name") 
    while ($bytes_count = read($file_query,$buffer,2096)) { 
    $size += $bytes_count; 
    print FILE $buffer; 
    } 
    close(FILE); 
    
  • 完成。

世界还不完美,但它终于有效。

回答

6

你将不得不做一点点改变使用CGI ::使用CGI :: Fast。确保你换你的CGI脚本使用while循环,因为文档指出http://p3rl.org/CGI::Fast

use CGI::Fast; 
while (CGI::Fast->new()) { 
    # The original CGI code goes in here 
} 
+1

此外,如果你未初始化的全局变量(啊)你的CGI继电器,你可能要修复它.. – 2010-12-16 08:04:52

+0

THX到你们两个。 – hornetbzz 2010-12-17 00:25:07