メイン

September 20, 2010

アップデートしてみる。

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

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

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

November 10, 2008

SSDを導入してみる。

IMG_0893s.JPG
このblogが動いている我が家のサーバも導入されてから5年、本格的に外部に公開して丸3年が経つ。ハードディスクもサーバ用のモノを導入してから毎日24時間止まることなく無事故で律儀に動き続けているが、筆不精にも関わらず300件近くのエントリがあり、そろそろディスククラッシュが心配だ。

ということで、清水の舞台から飛び降りるつもりで購入したのが今話題のSSDだ。Openblocks266はインタフェースがPATAで限定されるので、あまり選択肢はない。ということで探し当てたのが、Transcend製のTS32GSSD25-S。いまさら32GBの容量しかないが、現在のHDD使用容量は10GB足らずなので十分だ。むしろ信頼度は高い方が良いのでMLC素子ではなくSLC素子のものを手配した。

とはいえ、導入前にシステム(Vine Linux)のアップグレードを行うことにした。Release 3.2で長いことほったらかしにしていたので、4.2に上げなければならない。以下手順をメモっておく。

まず、カーネルのアップグレード。ぷらっとほーむのFTPサーバから、最新のファームウェアを取得しflashcfgで書き込む。忘れずにmodulesもHDDの/lib/modules/以下にコピーしておく。(アップグレードして気づいたが最新のカーネルではPCMCIAのドライバが更新されており、PCMCIA→USB経由で外部ハードディスクが無事認識されるようになっていた。)

次に、HDDの中身をSSDへバックアップする:まずは母艦となるデスクトップPCのPATAのIDEに双方をつないで、Kinoppixでブートする。fdiskでパーティションを切り、newfsでext2fsのファイルシステムを作成。そしてHDDの中身をSSDにすべてtarでコピーした。ちなみに、SSDはSLCとは言え書き換え回数の耐久性に乏しいので、敢えてジャーナリングファイルシステムであるext3fsではなくext2fsにしてある。

そして、HDDをOpenblocks266につなぎ直して、ディストリビューションをVine 3.xを4.xへアップグレードする:aptが4.2 releaseのファイルを参照するように/etc/apt/sources.listを以下のように書き換える。

rpm [vine] http://updates.vinelinux.org/apt 4.2/$(ARCH) main plus upates nonfree extras

rpm-src [vine] http://updates.vinelinux.org/apt 4.2/$(ARCH) main plus upates nonfree extras

ちなみに内向きのDNSサーバを行っていたので、aptでアップデートするときには/etc/resolv.confでは自分(127.0.0.1)ではなくルータに書き換えておいた。そして# apt-get update; apt-get install aptでまずはapt自身をアップグレード。そして、次に# apt-get dist-upgradeで全体をアップグレードする。時間はかかったが、ひたすら待っていればアップグレードが終了した。

システムは問題なく立ち上がったが、MovableTypesで動作しているこのblogは以前と同じようにうまく動かなかったので、ちょっと手直しが必要だった。

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にしてあげたらようやく復帰。

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

November 20, 2005

HDDを一新してみる。

IMG_3398s.JPG

またこのblogが動作しているOpenblocks 266のサーバが止まってしまったのだ。まぁ、このページは注目度が高いわけでも赤丸上昇中でもなんでもなく、更新も不定期に細々とやっているので、外向きには止まっていようといまいがあまり問題はない筈だ。ところが、内向きには我が家のDNSサーバやらいろいろなサービスを担当させているので、万が一止まってしまうと「インターネットつながんないよっ!」と御主人様(仮名)に叱咤されてしまい都合が悪い。

原因はというと、以前も書いたようにハードディスクにある。とにかくドライブ自体の動作が不安定であり、ログを見ているとI/Oエラーを起こしてOS側がにっちもさっちも行かなくなっている模様。ということで、前から狙っていた日立製のE7K100の60GB(HTE721060G9AT00)をちょっと奮発して購入したのだ。通常、このようなパーツは通販を使った方が安くて面倒くさくないのだが、HDDだけは運送屋さんの扱いが少々心配ということもあり店で買いたい。今回はわざわざ秋葉原までお出かけしたのだ(しかし、この街は私のような「年を取ったラジオ少年」にとっては、いつの間にやら訪れにくくなってしまった…)。

7200回転の割りに消費電力が低く、なによりも長時間駆動に対応しているらしい。これは実に心強い。ということで、早速環境を移行した。ちなみに、難しいことは一切しておらず、


  1. 新しいHDDをデスクトップPC(母艦)につないでfdiskを使ってパーティション切り、パーティションテーブルを作成(このとき、スワップ用の領域も忘れずに確保しておく)。
  2. 旧HDDの中身も母艦に繋いでtar cvfpでバックアップ。
  3. tar xvfp で新HDDへ展開。
  4. Openblocks266に組み込んで、ブートし、mkswapで先ほどのパーティションをswap領域に変換。
  5. リブート。

でおしまい。デスクトップPCは3.0GHzで演算能力が圧倒的に高く、ATA133であるため、tarなどの作業はこちらでやったほうが早く済む。

温度をhddtempでチェックしてみると前のものよりは若干高いようだが、振動は少なくヘッドのシーク音は明らかに小さくなった。もっとも、前のHDDは4200回転だったので温度が高くなったりするのは仕方がないかも。むしろ7200回転でこれは優秀なほうではないのだろうか。

低電圧という意味では、ノートパソコンにつなげてみるのも一興かもしれない。と物欲はとどまることを知らないのだ。

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 25, 2005

fsckしてみる。


サーバがいつの間にかダウンしていたのだ。原因はハードディスクのリードエラー。fsckをしつこく何度も繰り返すことによって、無事に再起動を果たした。

ちなみに、写真はこのblogが動いているサーバの全景である。吹けば飛ぶよな大きさである。実際に吹いて飛ばすには象並みの肺活量が必要と思われるが、細かいことは言わない方向で。背景にまったく関係のないものが写りこんでいるが、大きさ(というか小ささ)を理解していただくよい指標になるのではないかと思う。

しかし、uptime20日程度でダウンされては困る。ノートPC向けの2.5inchのハードディスクドライブを24時間運用するのはやはり無謀なのだろう。本格的にE7K100のような24時間運用専用のHDDへの置き換えを考慮せねばなるまい。普通のHDDよりは高価だが、2万円程度で手に入るのならば仕方がないか。

とか言いつつ、購入欲を正当化しているのだ。

October 9, 2005

NTPの設定をしてみる。

改めてNTPの設定をNTP - wiki@nothingを見ながら。FEED元はOCNのNTPサーバを選択するように/etc/ntp.confを編集(以前は有名どころから取得していた。反省)。ちなみに、ポート番号は123番である。

% /etc/init.d/ntpd stop
% ntpdate -b xxx-xxxx.ocn.ad.jp
% hwclock --systohc
% /etc/init.d/ntpd start
とした。つぎに、Openblocks266の下流につなげる玄箱の時刻設定。Linkstation/玄箱 HackBBSの記事によれば、カーネルが直接ハードウェアクロックを操作しているようなので、ケアしなくて良さそう。

October 5, 2005

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

ちょっと考えてみると、昨日の問題はなんとなくそれはそれであっているような。外側ならいざ知らローカルネットのアドレス解決はDNSを立てない限りうまくいかないような気がしてきた。更にGoogleを調べてみると解決できることが分かった。ローカルからドメイン名でアクセス出来ない!によれば、内向きのDNSを立てれば解決できるそうな。早速実行してみる。Linuxで自宅サーバの内部向けDNSサーバの構築を参考にしながら設定。うまくローカルネットからも見ることができるようになった。

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の方ではなくルータの設定画面に接続してしまうので、要対応。おそらく、外部からは正常に見えていると思われる。