臥薪嘗胆

インフラエンジニアのあれこれ

mod_mruby install してみた

なぜやるのか?

インフラエンジニアをやっていて、かゆいところに手が届かないことがたくさんあって
もどかしい思いをずっとしてきた。
でもいまは時代が変わったようで、自分でmoduleを作らなくても
チョイチョイっとかゆいところに手が届くそうだ
そうmrubyならね!
この流れ(あってる?)に乗り遅れるな!

で、matsumoto-r さん作の mod_mrubyを使ってみよう

親切にここに書かれていたので、この通りにする。

結果、test.rbが動くまではサクッとできる。 あとは何をしたいか。 ちょっとこれから考えてみよう。

以下やったログ

apacheいれとく

sudo yum install httpd.x86_64
sudo yum install httpd-devel.x86_64

mod_mrubyのsrcをもってくる

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

テストとビルド

cd mod_mruby
sh test.sh
sh build.sh

私はvagrant環境で試した 以下にビルド後の.soファイルができてた

ls -la /home/vagrant/mod_mruby/src/.libs/mod_mruby.so

これをコピってあげた。

cp /home/vagrant/mod_mruby/src/.libs/mod_mruby.so /usr/lib64/httpd/modules/
chown root: /usr/lib64/httpd/modules/mod_mruby.so

コンフもマニュアルのとおりに

[root@localhost mod_mruby]# cat /etc/httpd/conf.d/mruby.conf
LoadModule mruby_module modules/mod_mruby.so
<Location /mruby-test>
    mrubyHandlerMiddle /etc/httpd/conf.d/test.rb cache
</Location>

予め準備されているものを読み込むべくコピー

cp -p test/test.rb /etc/httpd/conf.d/
chown root: /etc/httpd/conf.d/test.rb

apacheを起動

systemctl status httpd.service
systemctl start httpd.service

curl してみた結果

[root@localhost mod_mruby]# curl http://127.0.0.1/mruby-test
# mod_mruby Test Page
__mod_mruby test start.__
## Apache Class Test
- Server: Apache
- Apache version: Apache/2.4.6 (CentOS)
- Apache build: Nov 19 2015 21:43:13
- module name: mod_mruby
- module version: 1.13.10
- syslogger function: OK
- errlogger function: OK
- OK status = 0
- DECLINED status = -1
- HTTP_OK status = 200
- HTTP_SERVICE_UNAVAILABLE status = 503
## Request Class Test
- filename = /var/www/html/mruby-test
- uri = /mruby-test
- ---- request_rec changed ----
- filename = /var/www/html/index.html
- uri = /index.html
r.document_root: /var/www/html
r.document_root: /tmp
## Server Class Test
- document_root = /var/www/html
- error_fname = logs/error_log
- hostname = localhost.localdomain
- timeout = 60000000
## Connection Class Test
- remote_ip 127.0.0.1
- local_ip 127.0.0.1
- keepalives = 0
##Notes Class Test
- memo = hello
## Env Class Test
- AUTHOR = matsumoto_r
- SERVER_SOFTWARE = Apache/2.4.6 (CentOS)
- env hash size = 25
- env key = UNIQUE_ID val = VsMsFszCek7oPhdkOOPzNAAAAAM
- env key = HTTP_USER_AGENT val = curl/7.29.0
- env key = HTTP_HOST val = 127.0.0.1
- env key = HTTP_ACCEPT val = */*
- env key = PATH val = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
- env key = SERVER_SIGNATURE val =
- env key = SERVER_SOFTWARE val = A p a c h e
- env key = SERVER_NAME val = 127.0.0.1
- env key = SERVER_ADDR val = 127.0.0.1
- env key = SERVER_PORT val = 80
- env key = REMOTE_ADDR val = 127.0.0.1
- env key = DOCUMENT_ROOT val = /var/www/html
- env key = REQUEST_SCHEME val = http
- env key = CONTEXT_PREFIX val =
- env key = CONTEXT_DOCUMENT_ROOT val = /var/www/html
- env key = SERVER_ADMIN val = root@localhost
- env key = SCRIPT_FILENAME val = /var/www/html/index.html
- env key = REMOTE_PORT val = 57100
- env key = GATEWAY_INTERFACE val = CGI/1.1
- env key = SERVER_PROTOCOL val = HTTP/1.1
- env key = REQUEST_METHOD val = GET
- env key = QUERY_STRING val =
- env key = REQUEST_URI val = /mruby-test
- env key = SCRIPT_NAME val = /index.html
- env key = AUTHOR val = matsumoto_r
## Headers_in Class Test
- Accept-Encoding = nil
- Accept-Encoding = gzip
- headers_in hash size = 4
- headers_in key = User-Agent val = curl/7.29.0
- headers_in key = Host val = 127.0.0.1
- headers_in key = Accept val = */*
- headers_in key = Accept-Encoding val = gzip
## Headers_out Class Test
- headers_out hash size = 0
## Scoreboard Class Test
- child pid = 15737
- thread limit    = 1
- server limit    = 256
- cpu load        = 792739788800
- load avereage   = [0, 0.0099999997764826, 0.090000003576279]
- total kbyte     = 3
- total access    = 1
- restart time    = 1.4556306719778e+15
- idle worker     = 4
- busy worker     = 1
- uptime          = 710
- access counter  = -1
- scoreboard status hash size = 1
- scoreboard key = 127.0.0.1 val = SERVER_GRACEFUL
- scoreboard counter hash size = 11
- scoreboard key = SERVER_READY val = 4
- scoreboard key = SERVER_STARTING val = 0
- scoreboard key = SERVER_BUSY_READ val = 0
- scoreboard key = SERVER_BUSY_WRITE val = 1
- scoreboard key = SERVER_BUSY_KEEPALIVE val = 0
- scoreboard key = SERVER_BUSY_LOG val = 0
- scoreboard key = SERVER_BUSY_DNS val = 0
- scoreboard key = SERVER_CLOSING val = 0
- scoreboard key = SERVER_DEAD val = 251
- scoreboard key = SERVER_GRACEFUL val = 0
- scoreboard key = SERVER_IDLE_KILL val = 0
## Finfo Class Test
- permission = 1877
- filetype regular file = false
- user = 0
- group = 0
- device = 64768
- inode = 35205976
- nlink = 2
- size = 6
- csize = 0
- atime = 1.447969437e+15
- mtime = 1.447969437e+15
- ctime = 1.4556292035898e+15
__Test Complete. Wellcome to mod_mruby world!!__