升级到MT3.34和FastCGI的开启

Movable Type 3.34出来好几天了吧?终于决定给自己的WebBlog升级了。
升级的热点是近来SPAM猖狂和新版本对FastCGI的支援。而我的WebBlog是在DreamHost上,刚好支援FastCGI

升级很容易,简单覆盖,看的出来,似乎 Six Apart 这次只是修改了 Bootstrap.pm 让它支援FastCGI而已,其他的修改基本上忽略不计。

说实在的,对于 FastCGI 技术我并不看好,觉得其不稳定性太高,程序写的稍有不好就会使apache崩溃,相对来说,我青睐于mod_perl,这个稳定点,性能也好点,MT程序标准的OOP编写方式在mod_perl跑的很稳定的,但是似乎支援mod_perl的空间除了自己作主机商外几乎是不可能的:)

废话少提,回归正题,FastCGI方式作为一种预编译运行模式是和普通的CGI方式是共存的。你可以在同一个空间下,同时让不同的程序运行在不同模式下。
故而即使你的主机空间支援FastCGI模式,你升级完后的MT3.34依然工作在普通CGI模式下,这个需要你设置下

FastCGI模式下的脚本程序文件默认是*.fcgi或者*.fpl
但是这个不是绝对的,你可以通过编辑 httpd.conf 或者 .htaccess来定义扩展名。
具体语法是

AddHandler fastcgi-script .fcgi .fpl

对于DreamHost,只要开启了FastCGI模式,.fcgi .fpl 已经是默认的了。
对于MT,有两种办法可以设置:
1。修改脚本扩展名字,比如我就修改成了 *.fpl (个人喜欢3位的扩展名)
具体操作如下:

mv mt.cgi mt.fpl
mv mt-comments.cgi mt-comments.fpl
mv mt-tb.cgi mt-tb.fpl
mv mt-view.cgi mt-view.fpl
mv mt-search.cgi mt-search.fpl

再编辑 mt-config.cgi,修改/添加如下:

AdminScript mt.fpl
CommentScript mt-comments.fpl
TrackbackScript mt-tb.fpl
SearchScript mt-search.fpl
ViewScript mt-view.fpl
记好完成后重建一次整个Blog。

2。强制你mt目录下面的所有的*.cgi程序运行在FastCGI下。
这个办法就简单了,编辑该目录下的 .htaccess 文件,添加如下语句

AddHandler fastcgi-script .cgi

当然前提是你的空间支持 .htaccess 文件和你的mt目录独立(即无其他cgi程序在里面,不然这些可能不支持FastCGI的程序也会工作在FastCGI下而导致程序运行异常或者apache崩溃)。

蜗牛一般的连接速度,我也算艰难的升级完了,就这个还是 SSH 下操作的结果。另外发现MT3.34的插件管理系统在FastCGI下有问题,大概是部分变量没有考虑在FastCGI下Glob变量的问题。
具体表现在你在插件系统中对插件进行停用/启用无法正常生效。
我最后的做法只好是点停用或者启用后立刻在SSH下touch一下程序,比较郁闷。

PS:说明下,在FastCGI下,你对程序的修改不会马上显示出来,你需要强制重载一次让程序在内存中更新(重新编译),命令如下:

touch path/to/mt/mt.fpl