ヒマをみつけて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

RSSの登録更新をお願いします

Sunday, 26 April 2009 05:19 by sabro

なんとか、BlogEngine.NETへの移行が終わりそうです。

トップページのURLは変わりませんが、RSSのURLが変わります。

今日の23:00くらいに、エイやッと入れ替える予定なので、RSSの更新をお願いしまーす。

Tags:  
Categories:   その他
Actions:   Permalink | Comments (41) | Comment RSSRSS comment feed

BlogEngine.NET on Monoハマり中( ̄□  ̄||

Tuesday, 14 April 2009 14:56 by sabro

BlogEngine.NETをMonoで動かすのは、やはりムズイです。環境は故合って、Mono 1.2.4 & BlogEngine.NET 1.4.5 でやってますが、うまく動いてくれません( ̄□  ̄||

BlogEngine.NET Modifications for Mono/Linuxを参考に、以下やったこと、binのリネーム以外は全てWeb.Configの修正です。

System.Managementの読み込みを削除
Mono 1.2.4では使えないNamespaceのようで、かつDBを使用せずXMLでやれば不要そうだったので削除。
Description属性を4つ削除
Web.Configのprovider定義タグではdescription属性が使えないらしいので削除。
DBBlogProviderタグ削除
SqlMembershipProvider削除
DbMembershipProvider削除
SqlRoleProvider削除
DbRoleProvider削除
XMLでやれば不要そうで、かつ動作不良の原因ぽかったので削除。
Compression HttpModuleを削除
ページに「?」が表示されるらしいので削除。
Binディレクトリをbinにリネーム
Linuxのファイル名が大文字、小文字を区別するので変更。
httpRuntimeを削除
クリエモンと同居させてるからか、Machine.Configで、httpRuntimeを読む時エラーになったのでWeb.Configのを削除したらなぜか直ったw。
StrageLocationを仮想パスでなく絶対パスで書く
Web.Configに「StorageLocation="~/App_Data/"」とあって、これを絶対パスで書かないとエラーになる部分があったので変更。しかし、絶対パスにしてもエラーになった・・・orz
最後のは、Mono1.2.4のHostingEnvironment.MapPathで、仮想パスをハジくチェックをしているのが原因だが、Mono 2.0のソースを見たらチェックしなくなっていたので、2.0以上でやらないと動かせないらしい。

 

public static string MapPath (string virtualPath)
{
if (virtualPath == null || virtualPath == "")
throw new ArgumentNullException ("virtualPath");

if (UrlUtils.IsRelativeUrl (virtualPath)) {
string msg = String.Format ("The relative virtual path '{0}', is not allowed here.", virtualPath);
throw new ArgumentException (msg);
}

HttpContext context = HttpContext.Current;
if (context == null)
return null;

return context.Request.MapPath (virtualPath);
}

というわけで、Mono 2.4も出てるらしいので、もうちょっとバージョンが上がったMonoVMで動かしてみようと思います。でも前、クリエモンを乗せたらうまく動かなかったんだよな~( ̄~ ̄)

あと、タイミングのいいことに、昨日、BlogEngine.NETが9ヶ月ぶりにバージョンアップして1.5になったそうなので、そっちも試してみようと思います。昨日、インストールがうまくいってたら、即、アップデートが必要だったと思えば失敗してよかったのかな(^^)

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

ブログエンジン移行計画中

Monday, 6 April 2009 16:57 by sabro

近々、ブログエンジンの移行を計画しています。

このブログは自宅サーバで運営してますが、CPUがPentium3というのもそろそろ限界かと思い始めて、先日NTT-X Storeで、HPのML115を買いました。年度末セールで、2台で21500円で買えて、ウホウホ言って喜んでたら、2日後に19500円になってました・・・orz

まあ、そんなわけでこの機会に、アプリも含めたサーバの再構築をしてみようと思ったわけです。最近は、Linux Monoでクリエモンとか動かしてるし、Monoで動くいいブログエンジンないかなーと探してたら、めっさいいのがありました。

BlogEngine.NET

BlogEngine.NETは、.netのブログエンジンを代表するようなプロダクトですが、Mono対応が売りのひとつになっています。いや素晴らしい(^^)

とりあえず、これでいってみようと思います。

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