はじめに
こんばんは。GMOペパボの久米です。 以前、「CentOS6で ngx_mruby + mruby-memcached + mruby-mysql をインストールした。」という記事でプログラマブルに制御できるnginxの紹介をし、リバースプロキシの構築を行いました。
本エントリでは、同様にプログラマブルに制御できるWEBサーバとしてApacheに @matsumotoryさん が作成している、 mod_mruby というモジュールを組み込みたいと思います。
これにより、ngx_mruby 同様にmrubyを使って動的にWEBサーバの設定を変更することができます。
環境
# | バージョン |
---|---|
OS | CentOS 6.6 |
httpd | 2.2.15-54 |
ruby | 1.9.3 |
必要なコンポーネント、ライブラリをインストール
yum install -y httpd httpd-devel php git zlib zlib-devel pcre-devel bison openssl-devel readline-devel
Ruby(rbenv環境)をインストール
rbenv + ruby-buildをダウンロード
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenvのPATHの設定
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL -l
rubyのバージョンを選択
- 今回は1.9.xの最新版を利用する。
rbenv install --list
rbenv install 1.9.3-p551
rbenv global 1.9.3-p551
mod_mrubyのビルドに必要なrakeをインストール
rbenv exec gem install rake
mod_mrubyをビルド
ソースをダウンロード
cd /usr/local/src
git clone https://github.com/matsumoto-r/mod_mruby.git
ビルド
cd mod_mruby
sh ./test.sh
sh ./build.sh
httpdにmod_mrubyを組み込む
cp -p /usr/local/src/mod_mruby/src/.libs/mod_mruby.so /etc/httpd/modules/
vi /etc/httpd/conf.d/mruby.conf
mruby.conf
LoadModule mruby_module modules/mod_mruby.so
<Location /mruby-test>
mrubyHandlerMiddle /etc/httpd/lib/test.rb
</Location>
動作確認
mkdir /etc/httpd/lib
cp -p /usr/local/src/mod_mruby/test/test.rb /etc/httpd/lib/
service httpd start
curl http://127.0.0.1/mruby-test
実行結果
(snip)
__Test Complete. Wellcome to mod_mruby world!!__
はろーーーmod_mruby!!!