LoginSignup
11
10

More than 5 years have passed since last update.

mod_mruby を Amazon EC2、Apache2.2 へ導入する

Last updated at Posted at 2014-08-16

2014/12/03追記:
Apache2.4に導入する手順をこちらに書きました。
mod_mruby を Amazon EC2、Apache2.4 へ導入する


前から気になってた mod_mruby を試してみたメモです。
mod_mruby で、Apacheモジュールを Ruby(厳密にはmruby)で書けるようです。

過去にも少し Apache モジュールは書いたことがあるのですが(しょぼいですが 1つだけ GitHub にも上げてます)、Ruby で書いて、Apache で色々できたら素敵やん.. と思い。

ローカルに環境を作ってもよかったのですが、やはりちゃんとWEBサーバで動作させたかったので、Amazon EC2 に導入してみました。

Apache バージョン:2.2.27
mod_mruby バージョン:1.4.1
Amazon Linux:AMI 2014.03.2(HVM)64bit

Apache の導入手順は下記の通りなのですが、恐らくデフォルトの prefork モードで動いていると思います。

環境の構築と mod_mruby の導入

EC2 のセットアップ

ここではセットアップ手順は述べませんが、AMI は Quick Start の一番上にある Amazon Linux を利用しました。

スクリーンショット 2014-08-16 17.20.59.png

また、Apache を立ち上げたいので、セキュリティグループの設定で 80番 ポートを開けておきます。

スクリーンショット 2014-08-16 17.35.40.png

※ アクセス元の IP は、出来るなら絞った方がよいと思います。

Apache のインストール

恐らく apxs が必要なんだろうなと思い、devel 版をインストールしました。

$ sudo yum -y install httpd-devel

動作確認

Apache を起動します。

$ sudo /etc/init.d/httpd start
httpd を起動中:                    [  OK  ]

適当なブラウザで、EC2 の Public DNS もしくは Public IP でアクセスしてみます。次のようにおなじみのページが表示されればOKです。

スクリーンショット 2014-08-16 17.39.45.png

mod_mruby の導入

このページのインストール手順 を参考に作業をすすめます。まず、Git が必要なので、Git を yum でインストールします。

$ sudo yum -y install git

GitHub から mod_mruby を clone し、

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

コンパイル用のスクリプトを実行します。

$ cd mod_mruby
$ APXS_PATH_ENV='--with-apxs=/usr/sbin/apxs' APACHECTL_PATH_ENV='--with-apachectl=/usr/sbin/apachectl' sh build.sh

apxsapachectl のパスは、今回の環境は /user/sbin/ でした。ですので、上記でもそのように指定しています。

私の場合、コンパイルエラーが出たので、次のものをインストールしてから再度、実行しました。

$ sudo yum -y install gcc bison openssl-devel
$ sudo yum -y install hiredis-devel --enablerepo=epel

hiredis-devel は通常の yum リポジトリに存在しない?

コンパイルが成功したら、次のように Apache へ組み込みます。

$ cd mod_mruby
$ sudo make install

すると、/usr/lib64/httpd/modules/mod_mruby.so が配置されます。

スクリーンショット 2014-08-16 21.05.20.png

Apache の設定ファイル /etc/httpd/conf/httpd.conf を見てみると、すでにこのモジュールを読み込む記述が追記されているようなので、

スクリーンショット 2014-08-16 21.09.17.png

Apache を再起動して、有効にします。

$ sudo /etc/init.d/httpd restart
httpd を停止中:                    [  OK  ]
httpd を起動中:                    [  OK  ]

以上で導入は完了です^^

mod_mruby を試してみる

git colone した mod_murby ディレクトリに、テスト用のスクリプト(test/test.rb)があるので、それを動かしてみます。

テスト用のスクリプトを、Apache の DocumentRoot 直下へコピーします。

$ sudo cp test.rb /var/www/html/

Apache側で、mod_mruby の設定をします。mod_mruby 用の conf ファイルを作成し、

$ sudo touch /etc/httpd/conf.d/mruby.conf

次のように記載します。

/etc/httpd/conf.d/mruby.conf
<Location /mruby-test>
    mrubyHandlerMiddle /var/www/html/test.rb
</Location>

保存したら Apache を再起動し、

$ sudo /etc/init.d/httpd restart

ブラウザで /mruby-test へアクセスしてみます。

スクリーンショット 2014-08-16 21.49.55.png

ちゃんと動作しているようです^^

おわりに

今回は環境の構築と動作確認までを行いました。次回は、実際に何かモジュールを書いていきます。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10