ようへいの日々精進XP

よかろうもん

mod_mruby を試してみる

はじめに

先日参加した第2回 コンテナ型仮想化の情報交換会@東京の中で @matsumotory さんが紹介されていた mod_mruby を試してみたいと思う。

とりあえず試すという時には docker がとても便利だなーということで、こちらのコンテナイメージを使って試す。


手順

README.md に従って導入する。

コンテナを起動して必要なパッケージをインストール

docker run -i -t inokappa/wheezy-basic /bin/bash

今回は Debian 7.1 環境で試す。

sudo apt-get update
sudo apt-get install apache2
sudo apt-get install git
sudo apt-get install apache2-prefork-dev
sudo apt-get install rake
sudo apt-get install bison
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libhiredis-dev
sudo apt-get install libmarkdown2-dev
sudo apt-get install libcap-dev
sudo apt-get install libcgroup-dev

補足と修正

sudo apt-get install libcgroup

は間違い。

ソースコードを git clone する

cd /root
git clone git://github.com/matsumoto-r/mod_mruby.git

ビルド用のシェルスクリプトを実行する

cd mod_mruby
sh build.sh

正常に終了すると /etc/apache2/mods-enabled 以下に mruby.load が生成されている。また、/usr/lib/apache2/modules/mod_mruby.so も生成されていることを確認する。

LoadModule mruby_module       /usr/lib/apache2/modules/mod_mruby.so

上記のようになっているので、さらに AddHandler mruby-script .rb を追加して下記のようにな状態にしておく。

LoadModule mruby_module       /usr/lib/apache2/modules/mod_mruby.so
AddHandler mruby-script .rb

また、test.rb をドキュメントルートにコピーしておく。

cd /root/mod_mruby/test
cp test.rb /var/www/

apache の configtest で確認

apachectl configtest

以下のように warning が出たりするけど放置...

/usr/sbin/apachectl: 87: ulimit: error setting limit (Operation not permitted)
apache2: Could not reliably determine the server's fully qualified domain name, using ::1 for ServerName
Syntax OK

一旦、コンテナから exit する。

コンテナイメージを作成する

docker ps -a

にて先ほどのコンテナの ID を確認してコンテナイメージをコミットする。

docker commit ${ID} ${image/name}

コンテナイメージを起動する

docker run -i -t -p 80 ${image/name} /bin/bash

ログイン後に Apache を起動する。

sudo /etc/init.d/apache2 start

確認

docker ps でポートを確認する

docker ps でコンテナ内の 80 ポートと紐付いているポートを確認する。

ID                  IMAGE                                     COMMAND             CREATED             STATUS              PORTS
89f052176180        inokappa/wheezy-apache-mod-mruby:latest   /bin/bash           27 minutes ago      Up 27 minutes       49153->80

上記の例では 49153->80 となっているので docker0 の IP:49153 でアクセスすることになる。

アクセスしてみる

先ほど設置した test.rb にアクセスしてみる。

f:id:inokara:20131008004850p:plain

おお、アクセス出来た。


最後に

  • 若干、ビルドに時間を要した(関連するパッケージの導入で...)が簡単に mod_mruby を試すことが出来た