Aug 20, 2017

Raspberry Pi + Raspbian OSで試験運用中

このweblogは9年もの間、玄箱HGの自宅サーバーで運用して来たが、昨年辺りからHDDがすごい音を出すようになり、そろそろハードウェア的に限界が来ていると思っていたのと、少し前にこの玄箱を木製の密閉式のサイドボードに入れるようにしてから、えらく高温になり、その内発火しそうなので、サーバーを引っ越すことにした。

当初、24h運転の自宅サーバーを設置した理由は、weblogを始めようと思ったら、プロバイダーの無料のホームページ設置スペースではMovableType等のCMSが使えなかったからであり、その後、Javaアプレットを公開したり、色々なCGIやJavaのサーブレットを動かして遊ぶようになって手放せなくなったが、現在はそういったことまでできる、自由が効く安価なレンタルサーバーがあるので、自宅サーバーにこだわる理由が無くなった。

しかし、今回はRaspberry Piを購入して、自宅サーバーの運用を継続することに決めた。
あの高価な、少し前まで40万超えだったMathematicaを無料で使えるということで、いつかRaspberry Piを買おうと思っていたのだが、さらに先月、Raspberry Piで個人的に思い入れのあるFreeBSDが動作することを知り、この夏休みにFreeBSDでサーバー構築すべく、Raspberry Piを購入したのである。

最新のRaspberry Pi 3はFreeBSDが未対応ということなので、Raspberry Pi 2を購入した。
microSDカードは、相性があるそうでよくわからなかったので、とりあえず日本製であれば何でも良いかと思って、Amazonで安かったTOSHIBAのMSDAR40N32Gを合わせて購入した。

とりあえず動かしてみようと、セットアップマニュアルに従って、microSDに"NOOBS"を焼き込み、HDMIケーブルでテレビと繋ぎ、電源端子にmicroUSBケーブルを挿してUSB給電可能な玄箱HGを繋ぐと、セットアップ画面が表示された。
OSの選択をしないと先に進まないようだったので、USBマウスを繋いでRaspbian OSを選択すると、1時間くらいしてOSのインストールが終わり、再起動するとRaspbianのデスクトップ画面が開いて、上部のMathematicaアイコンをクリックするとMathematicaが起動したので、とりあえず感動しておいた。

続いて、FreeBSD-11.1-RELEASE-arm-armv6-RPI2.img.xzをダウンロードして、このページに従ってmicroSDに焼き込んで起動すると、テレビにカラフルな四角形が表示されたのだが、SDカードのアクセスランプが点滅を繰り返すばかりで、そこから先に進まなかった。
何がおかしいのだろうと調べると、Raspberry Pi 2 v1.2ではSoCがBCM2836からBCM2837に変更され、ARMプロセッサーがCortex-A7からCortex-A53に変わったので、同じカーネルでは起動できなくなったらしい。
せっかくPi 3より少し割高だったPi 2を買ったのに、ガッカリである。

大量に出回っているPi 3用のFreeBSDはその内正式リリースされるだろうが、主に既にPi 2を使ってるシステムの為に販売されるPi 2 v1.2向けにもリリースされるとは限らないので、FreeBSDのリリースを待たず、Raspbianでサーバー構築することにした。

まだまだ不完全ながら、夏休みを丸々費やして、とりあえずweblogのデータを引っ越して最低限動作するようになったので、Webサーバーをこれに置き換えた。

以下、やったことを大まかに控えておく。

1. VNCの有効化
 最初からRealVNCサーバーがインストールされており、デスクトップの「設定」→「Raspberry Piの設定」→「インターフェース」で有効化するだけだった。

2. aptitudeでmovabletype, apache2, mysql-serverをインストール
 まずupdateする必要があった。
 aptのパッケージにmovabletype 5.2.7があったので、これまでマニュアルインストールして使っていた3.3.5から移行することにした。今はWordPressが圧倒的に人気で、MovableTypeはほとんど使われなくなっているそうだが、MovableTypeはHTMLを静的に生成できるので、依然としてスペックの低いマシンに向いていると思う。
 movabletypeのインストール中に、設定ファイルを自動生成するか何かのダイアログが出たが、自動設定しないを選択した。

3. Apache2の設定
 /etc/apache2/sites-enabled/000-default.conf のDocumentRootを変更
 /etc/apache2/mods-enabled/ にcgid.conf, cgid.loadのsymlink追加
 /etc/apache2/conf-enabled/serve-cgi-bin.conf にアクセス可能アドレス設定

4. MovableTypeの試運転
 mt.cgiにアクセスすると

You don't have permission to access /XXX/mt-wizard.cgi on this server.

 というエラーになるので、
 /etc/apache2/conf-enabled/movabletype-opensource.conf
 の
Require all denied

 の行をコメントアウトしてmt_wizard.cgiを有効にする必要があった。
 (/usr/share/doc/movabletype-opensource参照)

 それから、何故か/usr/lib/cgi-bin/movabletype/にthemesへのsymlinkが無かったのを修正した。

5. MovableTypeのデータベースの移行
 MySQLのデータベースをimportした後、
 https://www.movabletype.jp/documentation/mt5/upgrade/
 の「既存のデータベースを上書きする方式」に従ってアップグレードした。

6. BlogのDesign Themeを"Rainier"に変更
 デフォルトのデザインがもう1つな感じがしたので、定番の1つらしい"Rainier"をインストールした。
 MT5.2対応と書いてあるが、html_head.mtmlの <$mt:StatsSnippet$>がMT6.0以降にしか無いので、コメントアウトする必要があった。
 それから、本文と追記の境界がわからなかったので、間に線を引くようにした。

7. MT-Keystrokes v0.1.5の導入
 keystrokes.plを/usr/share/movabletype/plugins/にコピー
 keystrokes.plは以下の2行をコメントアウト
 ・"return 1 unless $MT::VERSION =~ m(^3\.);"の行
 ・"$eh->error("keystroke id: " . $obj->blog_id);"の行
 MovableTypeの管理画面でテンプレートのComment Formを以下のように変更
 ・<form>タグの直後に<$MTKeystrokes$>を追加
 ・<textarea>タグ内にonkeypress="keystrokes(this.form)"を追加
 ・<input type="submit" value="Submit">タグ(2ヶ所)内にonclick="keystrokes(this.form)"を追加

8. ローカルメールサーバー立ち上げ
 aptでmovabletypeをインストールした時にexim4がインストールされたので、SMTPサーバーはこれを使用した。
 dpkg-reconfigure exim4-configで設定画面を開き、適当に設定した。
 POP3サーバーはDovecotをインストールした。

9. 固定IP化
 /etc/dhcpcd.confの末尾に次の4行を挿入

interface eth0
static ip_address=192.168.0.XX/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

 (man dhcpcd.confのstaticの所参照)


Raspberry Pi 2を触り始めて最初に思ったのは、ARM v8の900MHzの4コアにしては意外に遅いということだった。
しばらく触っていると、その原因は明らかにSDカードのアクセス速度だった。

そこで、http://elinux.org/RPi_SD_cardsに書いてある方法でSDカードの速度計測をして、玄箱HGのHDDの速度と比較してみた。

・Raspberry Pi 2 + TOSHIBA MSDAR40N32G
read: 22.7MB/s
write: 12.3MB/s

・玄箱HG + Hitachi Deskstar 7K250
read: 36.0MB/s
write: 17.0MB/s

Readの速度が22.7MB/sなのはほぼRaspberry Piの限界のようなので、それほどmicroSDカードの選定が不適切だった訳ではなさそうである。
SDカードはメカが無いので当然HDDより速いと思っていたが、完全な思い違いだった。

【2017/10/15追記】
MovableTypeのバージョンアップ後、生成されるHTMLのファイル名の"_"(アンダースコア)がことごとく"-"(ハイフン)に変わっており、リンク切れを多発していたことに気付いた。
MovableTypeのFAQによると、これがデフォルトの設定らしく、Blogの設定画面のDesign->TemplatesのArchive TemplatesのEntryを開き、"Template Options"の"Archive Mapping"として"Custom"を選び、デフォルトの"%y/%m/%-f"を"%y/%m/%f"に変えると、"_"が"-"に置換されない(逆に"-"が"_"に置換される?)ようになるらしい。
過去にこんな設定をいじった記憶は無いのだが...

WriteBacks

writeback message: