fastcgi运行mt总有些问题

Author:David | 【转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
URL:

哎,毫不容易让mt在fastcgi底下运行起来,但是勇气来总有些问题,比如发完了文章就出现错误,但是文章还是正确的发布了。
配置的方法还是从小日本那里学来的:http://as-is.net/blog/archives/001042.html#mt32-fcgi-step0
先用他写的一个patch:http://as-is.net/blog/archives/misc/mt32/mt32-uo-patch.diff把mt3.2打一下补丁
然后修改httpd.conf的设置:
LoadModule fastcgi_module libexec/apache/mod_fastcgi.so
AddModule mod_fastcgi.c

AddHandler fcgid-script .fcgi
#FastCGIConfig -maxClassProcesses 4 -minProcesses 1
FastCgiIpcDir /tmp
FastCGIConfig -autoUpdate -idle-timeout 120 -killInterval 3600 -maxClassProcesses 3 -maxProcesses 15
然后在mt的cgi脚本根目录建立dispatch.fcgi:
#!/usr/bin/perl -w
use strict;
use lib 'lib';
use MT::Bootstrap;
use CGI::Fast qw(:standard);

my $handlers = {
'mt.fcgi' => 'MT::App::CMS',
'mt-comments.fcgi' => 'MT::App::Comments',
'mt-tb.fcgi' => 'MT::App::Trackback',
'mt-search.fcgi' => 'MT::App::Search',
## uncomment if necessary, but this adds a lot of
## overhead since it loads up LibXML.
## 'mt-atom.fcgi' => 'MT::AtomServer',
};
eval "use $_" foreach (values %$handlers);

eval {
while (my $q = new CGI::Fast) {
my $cgi = $q->url;
$cgi =~ s!.*/!!;
my $pkg = $handlers->{$cgi};
die "Invalid handler for $cgi" unless $pkg;
my $app = $pkg->new(CGIObject => $q) or die $pkg->errstr;
local $SIG{__WARN__} = sub { $app->trace($_[0]) };
MT->set_instance($app);
$app->init_request(CGIObject => $q) unless $app->{init_request};
$app->run;
my $mode = $app->mode || '';
if ("$pkg->$mode" eq 'MT::App::CMS->plugin_control') {
exit; # allows server to recycle after changing plugin switches
}
}
};
if ($@) {
print "Content-Type: text/html\n\n";
print "Got an error: $@";
}
然后建立.htaccess文件:
RewriteEngine on
RewriteRule ^mt\.fcgi(.*)$ dispatch.fcgi$1 [L]
RewriteRule ^mt-comments\.fcgi(.*)$ dispatch.fcgi$1 [L]
RewriteRule ^mt-tb\.fcgi(.*)$ dispatch.fcgi$1 [L]
RewriteRule ^mt-search\.fcgi(.*)$ dispatch.fcgi$1 [L]
最后修改mt-config.cgi文件:
AdminScript mt.fcgi
CommentScript mt-comments.fcgi
TrackbackScript mt-tb.fcgi
SearchScript mt-search.fcgi
好了,访问mt.fcgi应该可以运行了:
http://blog.iyi.cn/cgi-bin/mt.fcgi

Clicki