Twitterでつぶやき

これは Twitter(ツィッター)というウェブ・サービスです


2008年 3月 20日 (木) 春分の日

先日 BBS の SPAM について書いたが,実はそれ以上にそれ以前からずっと悩まされていたのがトラックバック SPAM だ。ご承知のようにこのブログは Movable Type を利用して作成しているが,問題だったのは,従前やはり MT を使って運営していた大学のゼミのためのブログ(現在は閉鎖)のようだ。すなわち,当該ブログを削除する際に個々のエントリーやそのトラックバック受付設定をまず削除すればよかったのかもしれないが,それらをせずにブログ全体を削除してしまったため,トラックバックのための情報は残っていたままになっていたようで,そのことが SPAM を誘っていたのではないかと思われる。ブログ作成当初から MT ver. 3.17 を使い続けて(アップグレードを面倒がっていた),有志によるプラグインによってトラックバック SPAM を弾いていたのだが,残念ながらこれではトラックバックの CGI の起動自体までは防げていなかったようである。

このことに気づいたのは,レンタル・サーバーの運営会社である さくらインターネット からの通知によってであった。そのメールによれば,私のサイトの上記 CGI「著しく呼び出されて」 いてサーバーに負荷がかかっていたといい,応急処置として当該 CGI のパーミッションを変更したとのことであった。

こうなると重い腰を上げていよいよ対処せざるを得ない。ここで当初私がやろうとしたことは,①MT をアップグレードすること,そして②データベースを MySQL に移すこと,のみであった。MT のアップグレードは当然なのだが,最終的には現在の最新バージョンである 4.1 にすべしということで,データベースの移行も必要となったのだ(MT 4 以降では従前の Berkeley DB が使えないそうなので)。まずは MT を 3.38 にして(これは頗る簡単だった),データベースを変更……と思っていたところで考えた――単に MT をアップグレードしてもトラックバックの CGI がサイトの同一箇所にあれば引き続き SPAM に狙われてしまうのではないか,と。そこで作戦を変更,MT 4.1 はまったく別の場所にインストールしておいて,従前のデータをそちらにインポートすることに。単純に 3.38 でエクスポートするのではなく,4.1 用にデータを整えなければならなかったがそれほど難しい作業ではなかった(ネットで留意点を調べてそのとおり実行したが,参照にしたサイトは失念)。

しかしここで壁が立ちはだかる。従前使っていたテンプレートをそのまま流用しようとしたのだが,どうやら一部のテンプレート・タグの仕様が変更になっていたようで従前のものはそのまま使えず,再構築の際にエラーが発生。この問題も公式のヘルプや検索して見つけたサイトを参考にしつつ何とかクリアできたものの……さらに大きな壁が……サイトの再構築に時間がかかりすぎる。とりわけ個別エントリー・アーカイヴの再構築には一晩かかってしまうのだ(なぜか理由はわからないが,EntriesPerRebuild を設定してもダメで一つひとつ再構築しているらしい)。テンプレートの変更のたびに一晩費やすとは……さすがにやっていられない(この辺りの心情を吐露したのが 18日付の日記)。

もっとも,これはある意味仕方のないことでもある。何せエントリー数が 2000を超えているのだから(毎日記録をつけるようになって 5年半。一日ごとにエントリーを作っているのだから,至極当然。)。逆に言えば,これを毎度再構築してスタティック(静的)なページにすることが無理な話なのだろう。そこで,渡りに船とばかりにダイナミック・パブリッシングにしようと思ったのだ。

当然ながらまずは情報収集。ここで見つけた重要な留意点としては,①/lib/MT/App/CMS.pm の “Options -Indexes +SymLinksIfOwnerMatch” をコメントアウトする(さくらインターネット の制限事項のため),②ブログのルートに自動生成される mtview.php のパーミッションを 755 にする,といったところ。しかしこれだけでは不十分で,現に私は何度か失敗した。上記に加えて,③ダイナミック・パブリッシングに設定変更し再構築する際に,ブログのルートに .htaccess を置かないこと(既存のファイルがあると,上記①の機能によって .htaccess が自動生成されるのが妨げられてしまう。私は一度,自動生成される内容を既存の .htaccess に追記してみたが,矛盾が生じていたようでダメだった。),そして④アーカイヴのパスに部分一致(おそらく先頭部分一致)する静的ページをつくらないこと(私はアーカイヴのパスを “%Y/%m/%d.shtml” のように指定しているが,例えば 2006.shtml というように先頭部分一致するような静的ページがあるとアーカイヴを呼び出す際にこれが表示されてしまう。),に注意すべし。

しかして,昨夜ようやくダイナミック・パブリッシング化することができた。これでもう,あの再構築地獄を免れることができる。静的ページがなくなったおかげで,Namazu の検索インデックスを生成するのには一手間かかるようになってしまったが,2000超のエントリーの再構築よりはよっぽどマシだ。

見たもの・聴いたもの


この記事に付されたタグ


この記事へのコメント [1件]

※ 現在コメントは受け付けていません。

関堂幸輔
Posted on 2008-03-22, 03:31:09 JST

ダイナミック・パブリッシングで「キャッシュなし」に設定しているんだけど,表示速度はそんなにストレス感じませんよね? こんなにサクっと表示されるのに,静的アーカイヴでやっていたときは何であんなに再構築に時間がかかったんだろう?……さくらの MySQL サーバの遅さとかも疑ったもんなぁ。


トラックバックの送信

  • あなたのブログがトラックバック機能を備えている場合は記事作成画面等から上記 URL に Ping を送信してください。
  • 手動でトラックバックする場合は下記のフォームからあなたのブログおよびその記事に関する情報を送信してください。手動送信時には別のウィンドウが開きます。元のウィンドウ(記事表示画面)をリロードしてトラックバックが反映されていれば処理がなされています。別に開いたウィンドウは送信処理後は閉じても構いません。


.