漫漫搬家路~~~
[喬遷啟事: 黑暗執行緒搬家了,未來我的Blog文章將改發表在http://blog.darkthread.net/blogs/darkthreadtw/default.aspx ,新的CS 2.1平台可以享受更多DIY的樂趣,會陸續提供討論區等功能。FeedBurner RSS的部分稍後會移轉過去,訂閱的人應該不受影響。歡迎舊雨新知,繼續支持愛護!]
上週提到我有想讓Blog走向專業化的計劃,Blogger其實在穩定性、速度方面都很優,又有Google撐腰,加上不花一毛錢,Windows Live Writer支援,實在是很不錯的Blog平台。只可惜Blogger的經營策略過於保守,功能少有更新,許多業界標準的Blog功能,例如: 最新留言清單、日曆顯示,甚至連最基本的文章分類都付之闕如(哇~~~ 我又用成語了,杜部長,我對不起您!),必須去整合del.icio.us之類書籤服務才能辦到。而對我來說最大的問題在於備份不易,圖檔放在Flickr,程式檔案下載則在Google Pages,要彙集統一管理十分不便。更嚴重的一點是,自己平日寫ASP.NET成精,看到自己的Blog平台功能不理想卻無力修改,內心的煎熬實在不足為外人道呀! (Blogger可以Support Javascript其實就很酷了,但有些事在Server-Side處理掉可以省十倍的氣力) 之前有研究修改過Community Server 2.0,它提供SDK可以讓愛寫程式的賤骨頭們發揮的空間,所以就決定進行Blogger->CS 2.1 SP2的搬遷,同時也會租個網路空間,掛上有darkthread的Domain Name重新開張。
以下就是我長達12天夜間搬家的漫長經過:
1.Blogger -> CS 2.1 SP2
我打算先在自己的機器上將CS裝好並匯完內容後再去租空間,一來是在本機操作速度快,也好Trouble-Shooting(後來驗證這個決策是對的,Web Hosting的環境能做的設定及檢查很有限,有時得Call Support人員協助),二來是還沒Ready前,租空間來養蚊子自然不是摳王的行事風格。
網路已有前人寫好Blogger->CS 2.0的Tutorial與輔助工具,不過其中的VBScript在處理UTF-8格式的中文內容會造成亂碼,我只好照著原本的VBScript寫了.NET版,改用System.Text.RegularExpression,程式意外地變精簡許多。(前述VBScript的目的主要是修改BlogML中Comment UserName Attribute出現HTML Tag的問題及日期要轉成yyyy-MM-ddTHH:mm:ss的xsd:DateTime格式,心想Blogger要搬CS的人應該不多,有需要的朋友再出個聲吧)
依Tutorial掛上Import BlogML的Add-On,一下子所有的文章及意見都匯入CS中了,Tutorial中還有提到要用T-SQL Script處理匿名意見留言者顯示的問題,這部分照方煎藥即可。
2.圖檔!
我Blogger文章中的圖檔,早期是放在BlogSpot中(對,那個沒法瀏覽已上傳照片的特難用機制),後來則改放在Flickr。為了備份方便,我想將圖檔收錄在CS的相簿中,這樣子,只要備份SQL,整個Blog的內容就一次備足了。
首先,從SQL SELECT將160篇文章做成一個超大HTML,再用IE的Save As HTML功能,在htmlName_files目錄下就一口氣取得了全部的圖檔。下一件事是用程式將圖檔標上文章的編號,再借用Chiwi Gallery Manager的上傳功能。一次上傳完200張圖檔真是令人感動,選用CS這種知名的平台,千萬要善用工具、技術資源豐富的優勢。
圖檔上傳完,下一步苦功是要將文章中的<a href="..."><img src="..">由Flickr的URL換成CS相簿中的相對圖檔,但160篇文章,圖檔多達200張,由於LINK的格式變化不小,寫自動置換程式的時間看來會比手工改的時間更久,加上反正都要人工再校一次內容格式是否受損,這部分就決定以人工處理。(CS的TinyMCE文字編輯器,可以直接Insert相簿中的照片,但URL會用絕對網址,所以本機的http://localhost/會變成圖檔URL的一部分,事後再用T-SQL Replace Function置換。至於用過CS舊版的人可能會懷疑FreeTextEditor呢? 基於對XHTML的相容性,CS 2.1預設用的是TinyMCE,但Editor可以抽換沒問題。)
3.Tags
過去Blogger沒有分類機制,所以這次在檢閱文章時,我就順便為每篇文章加上Tag,使用者就可以由Tag Cloud中標籤文字大小看出Blog的文章走向,也可以一次挑出同一類別的相關文章。
4.Style
厭倦了過去的白底黑字,為了配合"黑暗"二字,這次大膽地採用了灰黑底色的Style,質感不錯,但不妙的是之前在白底色時期常用的藍色、咖啡色等文字,在灰黑底上變得很不清楚。檢視文字時,還要一併改改部分特殊文字顏色,讓它們在新的深底色上看起來不要太慘。
5.Add-On
自己搞Server,就要特別留意不要被網路駭客、垃圾留言攻陷。Comment Spam一向是Blog平台的大敵,CS標榜利用Comment的特徵來阻擋Spam-Comment,但我還是覺得要求使用者輸入雜訊文字圖片內容後才放行的做法比較好,所以另外裝了TimothyHumphrey.CommunityServer Add-On,如下方意見區所示。(這也才知道寫意見或註冊會員時,網頁要求你解讀歪七扭八的英文數字圖片後輸入的做法,其實有個專有名詞: CAPTCHA-Completely Automated Public Turing test to tell Computers and Humans Apart)
一直覺得Blog首頁列出最近的留言意見是很好的功能,但CS沒有內建,所以我加掛了Keyvan Nayyeri的Blog Recent Feedbacks Control。
6.FullText Search Support
之前在2.0時就發現CS所使用的Hash法,在處理中文查詢上會有問題,因此照著過去的改法,我修改成可以用LIKE或CONTAINS進行查詢。
7.前進Web Hosting
參考了Rex的使用經驗,我選擇了口碑不錯,便宜又大碗的ASPnix,一年美金77.7元,提供3G的ASP.NET檔案與SQL 2005共用磁碟空間(後來發現要再花12元註冊一年的DNS名稱,但比起其他選擇還是便宜)。刷卡付完錢,馬上就可以登入使用及FTP上傳ASP.NET專案,DB的部分可以直接用SQL Server Management Studio連線管理,但是備份還原之類的操作,會因為選取檔案位置的權限問題而失敗,Forum上有人提到,可以將備份檔案FTP上去,請Support人員代為Restore。我寫了Mail請Support幫忙,大約幾十分鐘後就收到回覆,Support看我裝的是CS,還經驗十足地自動地替我設好photos/storage, photos/cache等目錄的寫入權限。
只是裝在ASPnix Virtual Directory下的程式運作起來,老是會出現
Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
的訊息,有時Reload一下就又OK,為此又打擾了ASPnix Support好幾次,最後終於Google到這篇說明,原來如DNN、CS等程式,裝在Web Hosting Virtual Directory下,就會因為Medium Trust Level限制而發生這種問題,要改安裝在wwwroot或Sub-Domain下才能解決。ASPnix Support的回應速度挺快的,態度也算親切,Forum上也有很多問題排除討論可以參考,我唯一小小的抱怨是少了一份整理好的FAQ,列出幾乎每個新手都會遇到的問題,應可節省來回Mail及在Forum搜索的時間。
還有一點,我買的Shared Web Hosting方案,IP是跟人共用的,也就是同一個IP 80 Port上也許掛了數百人的Web,IIS則是利用你輸入的Host Header來決定是Virutal Server。換句話說,www.darkthread.net, blog.darkthread.net都指向同一個IP,但輸入http://www.darkthread.net 與輸入http://blog.darkthread.net,會連到同一台IP的IIS,但進入不同的IIS Virtual Server。一開始以為會有自己專屬的IP,所以在Domain Name沒有註冊前用IP連線測試,就得到了HTTP 404 File Not Found的結果,被搞得一頭霧水。
8.大功告成
最後,檢視了一下系統功能大致都OK了,再花12塊美金註冊了darkthread.net這個網域名稱,新Blog就算正式掛牌營運囉! 歡迎光臨,要包入厝紅包或贈送新居禮品的朋友請留言,我會再派快遞去取,哈!
PS: 我還沒有太多時間去調整好CS 2.1的功能及顯示,急著搬是怕在Blogger上寫愈多搬起來愈累,所以大家對介面有建議或想法,可以在討論區提出,