メイン

September 20, 2010

アップデートしてみる。

いい加減MovableTypeを3.36からアップグレードしたのだ。

以前からずっとMovableTypeをアップグレードしたかったのだが、アップグレード途中でいつもハングするので原因究明もできずに困っていた。しかし、色々といじっていて気づいた。ログが膨大になっていたのだ。SQLiteでみたところ、そのサイズなんと5万行。どうりでハングるわけだ。ということで、こちらのサイトを参考にしながらTQSLiteを使用してすべてのログを削除した。データベースを更新したのち、MovableTypeの機能を使用してバックアップを作成。データベースが肥大化しているので位置から構築することにした。しかし、バックアップからのインポートはうまくいったのだが、新しいエントリの作成ができない。

どうやらテンプレートの文法に難があったらしい。ようやく作成ができ、サイトの再構成が終了。

August 6, 2008

PHPが処理されずに困ってみる。

のでエントリの本文すべてが読めない状況に陥っていたのだ。原因は何も考えずにVine Linux付属のapt-getでapacheのバージョンを上げたからなのだが、設定自体はそのまま継承していた(つもりだった)から問題は起きないと思っていたのだ。

実は問題は2つあった。

ひとつ目の問題は、文字コード。このサーバで動作しているMovabletypeでは、全てのエントリをUTF-8で保存している一方、apacheが送出するContent-TypeのcharsetがEUC-JPであるため、movabletypeの記事がすべて文字化けして表示されてしまっていた。

php_value default_charset utf-8

php_value mbstring.internal_encoding UTF-8

と場当たり的に.htaccessに追記してみたが、Internal Server Errorで上手く動作しない。そこでhttpd.confを仔細に眺めて見たらと、最後の行に「Include conf.d/*.conf」とあるのを発見。そこでconf.d/php5.confに上記の2行を追記して文字化けの問題はとりあえず解決(本来は.htaccessでディレクトリローカルに解決するのが筋だとは思うが…)。

2番目の問題は、PHPのincludeがまともに動かないこと。httpd.confあるいはphp.iniが悪いと踏んで、phpinfo()を呼び出す簡易phpスクリプトを書いて見ると、膨大なPHPの設定テーブルが出力された。ということはPHPは動作しているようだ。ちなみにそのファイルの内容は

<?php phpinfo(); ?>
とだけ書かれたものである。その出力内でようやく発見した環境変数が「allow_url_include」。これが「Off」になっていたので、/etc/php5/php.ini内でOnにしてあげたらようやく復帰。

サーバ管理(などと大げさなものではないが)なんてしばらくご無沙汰だったから、汗をかいたのだ。

September 27, 2006

SQLiteに移行してみる。

MovableTypeにクロスサイトスクリプトの脆弱性が見つかったため、早速3.33-jaにバージョンアップしたのだ。ついでに、データベースをSQLiteに移行してみることにした。というのも、このblogが動いているサーバは非常に非力で、Berkley DBでMovableTypeを動かすと再構築に非常に時間がかかるという問題があるからだ。

基本的には、データベースの設定(SQLite)を参考にしながら、Movable Type 3.2 マニュアル - Berkeley DBからのアップグレードのとおりに行う。

このマニュアルに記載されていない点:VineLinuxでは、SQLite 2.xをapt-get経由で簡単にインストールできる。DBD-SQLite2などのperlモジュールはrpmではインストールできないので、CPANのDBD::SQLite2のページからDBD-SQLite2-0.33.tar.gzをgetし、perl Makefile.PL; make; make installを行う。

ちなみに、mt-db-convert.cgiを使えば色々なデータベース形式間で変換ができるようなので覚えておいて損はない。これでサイトの構築が少しは早くなった筈。というか早くなったような気がする。プラシーボ効果万歳!

September 18, 2006

MovableType 3.32-jaにバージョンを上げてみる。

ちょっと時間ができたので、MovableTypeのバージョンを3.32-jaに上げてみたのだ。どうやらMovableTypeは新しいバージョンが出たとしてもあまり急いで飛びつかないほうが良いようなので、実は安定するまで様子をうかがっていた。バージョンアップといっても、3.2-jaからのバージョンアップだから本当に簡単だ。mt-config.cgiをバックアップしておいて、ディレクトリごと置き換えるだけ。サイトを再構築したらあっけなく3.32で動作した。

とそれだけなのもナンなので、懸案だった月送りCalendarの設定に再度チャレンジ。詳しく述べるのも面倒くさいので思い切り端折るが、メイン用のBetaコラム(インデックステンプレート)と月別のBetaコラム(アーカイブテンプレート)に分けて生成するようにして、メイン用は最終月のカレンダーを、月別のは各月のカレンダーをPHPでincludeするように設定する。インデックステンプレートではMTArchiveDateタグが使えないこと(インデックステンプレートだから当たり前なのだが)に気づくまで無駄な時間をすごしてしまった。blog内のエントリが簡単に追えるようになったので多少は使い勝手が向上したはず。

August 14, 2006

トラックバックに気づいてみる。

今やMovableType 3.31もリリースされ、3.2-jaなんて時代遅れなのだが、改めて設定するのが面倒で同じバージョンを使い続けているのだ。白状すると、そもそもMovableTypeのシステムをよくわからずに使用していたりもする。はっきり認めようではないか。エンジニアとして失格。

実はこのblog、トラックバックがうまくいった試しがない。自分から自分自身に向けたトラックバックすらうまく打てない。そんな状況では他のblogからのトラックバックは望むべくもなく、最近ようやくコメントを頂くことはできてもいわゆる「blogコミュニティ」に積極的に参加するなどこの弱小blogでは無理だと諦めていたのだ。ところが、本日トラックバックの設定画面を見ていて「迷惑トラックバック」というタブがあることを発見した。試しにクリックしてみたら、わんさかと出てきましたよ、SPAMなトラックバック。「なるほど一応トラックバックは受けることができるんだなぁ、でも全部SPAMじゃんか」と思いながら眺めていたら、その中に混じって自分自身が打ったトラックバック(失敗だと勘違いしていた)、そして1月4日にgon6さんから頂いたトラックバックを発見した。

なんと、ありがたくも初めて頂いたトラックバックを7ヶ月もの間SPAM扱いしてほったらかしにしていたことになる。恐らくトラックバックしたご本人もお忘れになっているかもしれないが、「失礼千万不届きもの切って捨てい」という状態である。本当に申し訳ございません。実は前もコメントで同じことをやらかしてしまい、その方からは2度とコメントを頂いていない。

というわけで、無事トラックバックができることが判りましたので皆様ご安心してトラックバックしてくださいませ。と言ってももう遅い。こうしてただでさえ狭い交友関係をどんどん狭くしていくのだ。だぁ!

November 12, 2005

月送りカレンダーを導入してみる。

November 6, 2005

すべてのページに右コラムを追加してみる。

PHPの仕組みとモジュール化のコツさえつかんでしまえば、表題のものを達成するのは非常に簡単である。


  1. まずは、右コラムの中身を作り出すテンプレートを作成する。これは[環境設定 < テンプレート < インデックス]で、「テンプレートを新規作成」を選ぶ。テンプレート名には「Beta column」、出力ファイル名は「beta.php」とでもする(3.2以降のMovabletypeでは、コラムを"beta", "gamma"と名づけているらしい)。「テンプレートの内容」としては今のところ、インデックステンプレートから以下の部分をカットアンドペースト。</div>の数が合わないと(つまり入れ子の数が合わないと)エラーになるので、エディタか何かで確認したほうが良い。
    <div id="beta">
    <div id="beta-inner" class="pkg">
    .....
    </div>
    </div>

  2. 次に、「メインページ」、「アーカイブページ」、「エントリー・アーカイブ」、「カテゴリーアーカイブ」、「日付アーカイブ」など、右コラムを追加したいページに
    <?php $openfile=file_get_contents('<$MTBlogURL$>beta.php' ?>
    を適当(ふさわしいの意味)な場所に書く。このとき、bodyのclass属性が
    <body class="layout-two-column-right">
    となっていることを確認のこと。
  3. サイトを再構築。

これで、右コラムの内容を生成するのは1回だけで済むため、エントリを投稿しても他のテンプレートの再構築に重複して時間がかからない仕組みとなる。

November 2, 2005

全エントリをPHP化してみる。

MovableTypeはなかなか高機能である。高機能であるが故に


  • 記事が増えるとエントリー(記事)を投稿し、反映されるのに時間がかかる(平たく言うと重い)。

という問題がある。特にここのblogのように非常に非力なサーバを使用していると、エントリ数が多くなくてもこの問題は深刻である。

ということで、負荷を軽減するために、まずはエントリの本文のみ別途保存して、アーカイブ・インデックスからincludeするようにする(いわゆる「本文のモジュール化」である)。これにはPHPを用いて、動的にページを生成するのである。これは、MovableTypeの生成ファイルのPHP化とモジュール化を参考にした。ただし、件のページとはバージョンが違う(3.2-ja-2)ので、設定のどこをいぢるかは探す必要があった(が、基本的には何も変わらない)。我がサーバではPHPの呼び出し方も違ったし。

3.2-jaでの手順

  1. [アーカイブテンプレートの作成:メインメニュー > BLOG名 > テンプレート] で 「アーカイブ」タブを選び、「テンプレートを新規作成」を選択し、「テンプレート名」を適当に(参考元では"Entry Body"とある)、「このテンプレートにリンクするファイル」を空欄に、「テンプレートの内容」を
    <$MTEntryBody$>
    とのみ記述して、保存。(エントリの本文だけを抽出する設定を行っている)
  2. [環境設定 > 設定]「公開」タブを選び、「公開」セクションで、「アーカイブの拡張子」をhtmlからphpへ変更。引き続き、「アーカイブマッピング」セクションでは、「アーカイブマッピングの新規作成」をクリック。先ほど作成した"Entry Body"を選択して追加。このとき、「優先」は「エントリー・アーカイブ」を選択したままにしておく。「出力フォーマット」は
    <$MTArchiveDate format="%Y/%m/parts/%d_%H%M"$>_body.php
    へ変更(これについては、次の項での記述と一致してれば良く、任意でよい)。
  3. 次に、あらゆるテンプレート(エントリーアーカイブ、カテゴリーアーカイブ、日付アーカイブ、)に存在する「<$MTEntryBody$>」という記述を
    <?php include"<$MTBlogURL$><$MTArchiveDate format="%Y/%m/parts/%d_%H%M"$>_body.php";?>
    と置換。
  4. すべてを再構築

とうまくいくはずが、我が家のマシンではPHPがうまく動いていなかったようだ。ということで、/etc/httpd/conf/httpd.confを変更。

<IfDefine HAVE_PHP5>
LoadModule php5_module modules/libphp5.so
</IfDefine>

<IfDefine HAVE_PHP5>
AddModule mod_php5.c
</IfDefine>

<IfModule mod_php5.c>
AddType application/x-httpd-php .phtml .php
AddType application/x-httpd-php-source .phps
</IfModule>


なんとか、無事にすべてPHP化できた。次は、右コラムのモジュール化に挑戦してみたいと思うのだ。

October 15, 2005

とりあえずMovableTypeをカスタマイズしてみる。

だんだんとこのblogも軌道に乗り始め、公開できるレベルに到達しつつあるような気がする。ただ、デフォルトのままで使うと、殺風景というか、なんか物足りない。ということで、カスタマイズに挑戦。久しぶりにHTMLタグを書いてみると、意外と忘れていることが多くて困る。

  1. style-site.cssをいじくって、色やフォントサイズ(デフォルトでは小さすぎて老眼の人にはつらい?)を自分好み(というか「がまんしましょう」スタイル)に変更。
  2. メインで表示する最新エントリ数を固定に変更。index.html内にある<MTEntries>を<MTEntries lastn="3">と変更。多少は軽くなるのが期待できる。
  3. 3.2では何故かカレンダーがついていないので、追加。どういう風に書けばよいのかを探すのに一苦労。

October 14, 2005

MovableTypeを3.2ja-2にアップグレードしてみる。

先日、「Openblocks266上のMovableType 3.2jaでエントリーを投稿して再構築すると時間が異様にかかる」というようなことを書いたが、実はMovableTypeそのものに問題があったことが判明。で、新たにRelease-2がリリースされたので、早速アップグレードすることにした。ちょっとは改善されたようなので、ちょっと一安心。

October 4, 2005

自宅サーバを公開してみる。(1)

hiwa.orgは1999年よりSakuraインターネットのレンタルサーバを利用している。当時は月2,000円でlogin shellつきでレンタルサーバができるというのは結構画期的だったのだが、今やたかだか100MBのディスクスペースでこの価格は決して安くない。事実、このプロバイダでは月500円で1GBのほぼ同等のサービスを提供している。ということで、乗り換えることにした。

一方、実は2年ほど前からOpenblocks266というマシンを実験的にサーバを動かしていた。デフォルトではSSD Linux(BSDのパクリで、外神田Software Distributionの略らしい)などという怪しげなLinuxディストリビューションがインストールされていたが、Vine Linux 2.6→3.0→3.1と手塩にかけて育ててきていたのだ。カーネルもパッチを入手して2.4.26をフラッシュROMに書き込んでみたり、いろいろと遊んできた。

最近やおら日記をつけ始めたくなり、MovableType 3.2(ja)を試しにインストールしてみて動かしてみるも、エントリーを投稿して再構築すると、異様に時間がかかってがっかり。PPC 266MHzではやはり力不足か。とはいえ、外に公開していろいろと遊んでみるのもいいかなと思って実験をすることにした。

まずは、サーバの引越しをするべく、新しいサービスを申し込み、年間使用料5,000円をまとめて振り込む。このISPはns[12].dns.ne.jpをDNSサーバとして設定している。

次に、家のドメインをDynamicDNSとして使えるように、私的Dynamic DNSにアカウントを登録。

まずはHTTPサービスを提供するために、ADSLモデム兼ルータにてTCPの80番ポートをNATで開放。Sygate社のポートスキャンプログラムを用いて、外からOpenblocksのサーバが見えていることを確認。WHOISサービスを用いて、新たに登録したDNSサーバが反映されていることを確認。とはいえ、DNSの情報が伝播するまで、しばらく放置が必要。

放置中にもやることは他にある。Dynamic DNSで指定したサブドメイン(hiwa.mydns.jp)を私的Dynamic DNSに登録し、とりあえずデスクトップPCからSirBiffなるツールを用いて、現在のグローバルIPアドレスをdynamic DNSに登録。しばらくして、うまくDNSが引ける事を確認した。つぎに、biffpopをOpenblocksでmakeして、インストール。続いてcronで起動されるように設定。ちなみに、この模様は私的Dynamic DNSの説明ページで読むことができる。

そうこうしているうちに、晴れてwww.hiwa.mydns.jpとしてアクセス接続することに成功。案外すんなり行った。本日はここまで。明日以降、本当に外部から見えるかどうかを確認する必要がある。ちなみに、このアドレスに接続すると、Openblocksの方ではなくルータの設定画面に接続してしまうので、要対応。おそらく、外部からは正常に見えていると思われる。