はじめに
先日参加した第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
にアクセスしてみる。
おお、アクセス出来た。
最後に
- 若干、ビルドに時間を要した(関連するパッケージの導入で...)が簡単に
mod_mruby
を試すことが出来た