なんとかこのブログも、PebbleからBlogEngine.NETへ移行できました。
もちろん、Linux Mono上で動いているのですが、その設定を書いてみます。バージョンは、Monoが1.9.1、BlogEngine.NETが1.5.0です。
ホントはもっとバージョンが新しいMonoを使おうかと思ってたのですが、実は、クリエモンが、Mono1.9.1以下のバージョンでしか動かなかったんです(_ _ || Mono2.4は、MonoRailの、URL Routingがうまく動きませんでした。どうやら、System.Web.HttpApplicationクラスで、web.configから設定を取得するコードが2.4から修正されて、Routingの設定が読めなかったみたいです。Mono2.2と2.0では、正規表現のオプションRegexOptions.ReferenceIgnoreCaseがサポートされてないようで、正規表現でURL Routingを割り当てる部分でエラーがでました。ブログをホストするマシンをクリエモンと別にするという手もあったんですが、ブログのためにマシンを追加するのも億劫だったので( ̄∇ ̄)
さあ、設定の手順ですが、実は結構簡単です。ここにたどり着くまでは、すごく大変だったんですけどね( ̄□  ̄||
- 1、ドキュメントルートに、BlogEngine.NETを設置
-
BlogEngine.NETを本家からダウンロード・解凍すると、「BlogEngine.Web」というディレクトリが出来るのでドキュメントルートにコピーします。
- 2、Web.Configの修正
-
まず、Web.Configを小文字のweb.configに修正します。これをやっとかないと動かないページがありました。次に、web.configを開いて、System.Managementのアセンブリを読み込んでいる部分をコメントアウトします。これは、DBを使う場合で使用されるようなので、デフォルトのまま、データをXMLに保存する場合はコメントアウトしても問題ありません。たぶん・・・。
- 3、Tag Cloud Widgetの修正
-
Tag Cloudのコントロールが、そのままでは動かないので、「BlogEngine.Web/widgets/Tag cloud/edit.ascx」のReferenceディレクティブを修正します。
<%@ Reference VirtualPath="~/widgets/Tag cloud/widget.ascx" %>
↓
<%@ Reference Control="~/widgets/Tag cloud/widget.ascx" %>
たぶん、WindowsならVirtualPathで動くんでしょうねぇ。
これで一応動きますが、実はブログのインポートにハマりどころがありました( ̄□  ̄|| BlogEngine.NETのインポートは、インポートツールを使用して行うんですが、これがどうやらアプリ内部で設定しているURLが全て小文字になっていて、大文字小文字を区別するLinuxだと動かないようです。ちょっと調べてみるとCodePlexにBlog Importerっていうプロジェクトがあって、これがBlogEngine.NETのインポートツールかなと思ったらビンゴだったので、ソースを見てみたのですが、あまりの酷さに愕然・・・。
- URLが全て小文字で記述されていて、Linuxのサービスにアクセスできない
- URLの最後に"/"をつける、CleanPath関数があるんだけど、それをインポートするRSSにも適用してる。だから、「http://○○/rss.xml/」みたいなURLにアクセスしにいく・・・orz
- コンテンツのフィルタ部分にバグがある
ちょっと諦めて、RSSをRubyスクリプトでパースして、Firefoxを自動実行する
iMacros用のマクロを生成、iMacrosを走らせて30分放置という荒技で対処しました( ̄∇ ̄)
まあ、こんなところです。コメントが移行できなかったのが少し残念ですがとりあえず、おkということで、やっとクリエモンの続きに入れるかな。