Raspberry Pi上でmod_mruby動いたよー

Raspberry Piとは、世界中でとんでもなく売れている名刺サイズのワンボードマイコンで、その性能たるやLinuxを普通に動かせるほどの実力の持ち主です。

Rpi2

2ヶ月前に注文してようやくRaspberry Piが届いたので、早速動かしてみました。まずはmod_mrubyを動かすところまでです。mod_mrubyが動いたので、後はマイコンボードらしく、mod_mruby経由でGPIOを触ってLEDをチカチカさせたり、赤外線センサーやリモコンをつけたりして色々遊んでみたいです。ということで、まずはmod_mrubyが動くところまでを紹介します。

Arch Linuxのインストール

Raspberry PiにOSを入れるために、Raspberry Pi用のArch Linuxを落としてきて、imgファイルをddでSDカードに書き込みます。それだけで、OSのインストールは完了です。詳細はぐぐると出てくるのでここでは省略します。

その後、SDカードをRaspberry Piにさして、USB給電で起動させます。RegzaにHDMI出力してみました。

Rpi1

おおーすばらしい。ちゃんと起動してきました。

この後は、sshでログインして色々mod_mrubyが動くまでの作業を行います。

mod_mrubyが動くまでの環境設定

大体以下のパッケージを入れるとOKそうです。

pacman -S make
pacman -S git
pacman -S gcc
pacman -S bison
pacman -S ruby
pacman -S apache

さすがArch Linux、簡単ですね。

mrubyとmod_mrubyのビルドしてブラウザからアクセス

適当にDEVディレクトリとかを作っておいて、

git clone git://github.com/mruby/mruby.git
git clone git://github.com/matsumoto-r/mod_mruby.git

で、mrubyとmod_mrubyをダウンロードしてきます。

そして、mrubyディレクトリに移動して、mrubyとmod_mrubyをビルドしましょう

cd mruby
rake
cd ../mod_mruby
./configure --with-mruby-root=../mruby
make
make install

いつも打ちすぎて手が勝手に動いてしまいます。以下のようにmod_mrubyまでビルドします。

そして、Apacheのconfに以下のように書いて、

LoadModule mruby_module       /usr/lib/httpd/modules/mod_mruby.so
<Location /mruby>
    sethandler mruby-native-script
    mrubyhandlercode "Apache.rputs 'hello mod_mruby world on Raspberry Pi'"
</Location>

Apacheを起動します。そして、http://example.jp/mrubyにアクセスすると、

hello

やりました、こんにちは!Raspberry Pi上のmod_mrubyの世界へ!

いつものベンチ

例のごとく、abコマンドで同時接続数10総接続数1000ぐらいでmod_mrubyでの文字列表示と、index.htmlによる文字列表示それぞれに対してベンチをとってみたところ、以下のような値になりました。

index.html表示

Requests per second:    36.46 [#/sec] (mean)

mod_mrubyによる表示

Requests per second:    275.51 [#/sec] (mean)

もはやこの領域では、単なる文字列表示において、ファイルI/Oさせなくてよいmod_mrubyの方が静的ファイルの表示よりもかなり高速であることがわかりました。

最後に

というわけで、無事Raspberry Pi上でmod_mrubyが動きました。カーネルがとても新しくcgroupも動きそうなのでmruby-cgroupを使ってとても楽しいことができそうです。

今後はマイコンボードらしくLEDチカチカ、赤外線ビュンビュン、ウォシュレット監視監視したいと思います。

Leave a Comment