升級到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