【发布时间】:2011-05-26 08:10:28
【问题描述】:
我在 Debian Lenny 机器上有 2 个不同的 Web 服务器。一个正在运行 FastCGI (TRAC),另一个 Web 服务器正在运行 PHP 和一些 CGI 脚本。所以我目前启用了 2 个 Apache2 模块(cgi 和 fcgi)并相应地设置了 2 个虚拟主机。我对同时运行的这两个模块没有其他特别的兴趣。
所以我只想让 Apache fastcgi 模块继续运行,因为它看起来更高效。
您能否确认以下评估是正确的或正确的?
1- 我将无事可做/更改 TRAC 站点(已运行 fcgi)
2- 我将不得不调整另一个 Web 服务器虚拟主机,以使用 fastcgi 脚本的处理程序进行设置
3- 我只需要将 perl 模块从“使用 CGI”更改为“使用 CGI::Fast”
4- 我将能够保留其余的 perl 现有 CGI 脚本,而无需进行其他更改
5- 我不需要在 Web 服务器脚本中使用 CGI::Apache 而是 CGI::FastCGI(i/o 当前的 CGI 模块)
我希望我的观点很清楚,因为这对我来说有点陌生......
谢谢
编辑:
感谢 Naveed 和 J-16 的提示,
如果它可以帮助其他人,我就是这样做的:
-
嗯,用 CPAN 安装了 CGI::Fast,然后效果更好..
在已安装 libperl 的 Debian 上perl -MCPAN -e shell cpan> install CGI::Fast 将文件名从 *.cgi 更改为 *.fcgi,
- 按照 Naveed 的建议包括了 fastcgi while 循环,
- 使用正确的 fastcgi 处理程序设置 apache 相关 vhost(参见 fastcgi doc)
- 启用 Apache fastcgi 模块 (a2enmod fastcgi) 并禁用 cgi 模块,
- 检查了 Apache 设置中的 fastcgi.conf 文件,
- 重新启动 Apache,
- 检查了作为 Apache 子进程运行的 fastcgi (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); 完成。
世界还不完美,但它终于可以工作了。
【问题讨论】:
标签: perl apache upload cgi fastcgi