ヒマをみつけてWeb開発
その場の思い付きを、ヒマをみつけてWebサイトにしてみるブログ

Linux Monoで、BlogEngine.NETを動かす

Sunday, 26 April 2009 11:44 by sabro

なんとかこのブログも、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だと動かないようです。ちょっと調べてみるとCodePlexBlog Importerっていうプロジェクトがあって、これがBlogEngine.NETのインポートツールかなと思ったらビンゴだったので、ソースを見てみたのですが、あまりの酷さに愕然・・・。

  • URLが全て小文字で記述されていて、Linuxのサービスにアクセスできない
  • URLの最後に"/"をつける、CleanPath関数があるんだけど、それをインポートするRSSにも適用してる。だから、「http://○○/rss.xml/」みたいなURLにアクセスしにいく・・・orz
  • コンテンツのフィルタ部分にバグがある
ちょっと諦めて、RSSをRubyスクリプトでパースして、Firefoxを自動実行するiMacros用のマクロを生成、iMacrosを走らせて30分放置という荒技で対処しました( ̄∇ ̄)

まあ、こんなところです。コメントが移行できなかったのが少し残念ですがとりあえず、おkということで、やっとクリエモンの続きに入れるかな。

Tags:   , , ,
Categories:   .NET
Actions:   Permalink | Comments (40) | Comment RSSRSS comment feed

ASP.NET MVCフレームワークとかあったなぁ

Saturday, 29 March 2008 13:43 by sabro
そういえばMonoRailじゃなくても、.NETのMVCありましたね (^ ^) ← 忘れていた人
ASP.NET MVC Framework

まだPreview版なので、MonoRailでやりますが。
Tags:   ,
Categories:   .NET
Actions:   Permalink | Comments (40) | Comment RSSRSS comment feed