tarantoolのご紹介
tarantoolというのがあって、触ってみたかったので触ってみる。
Key-value storeとapplicationサーバが
合わさったフレームワークのようだ。
本当はMacOS X上でやりたかったが...
MacOS Xであれば、homebrewでtaranntoolをビルドできるらしかった。
が、この記事を書いている時点では、ビルドが通らない!
なんでだって思ったらPRが出てた...
Ubuntuで環境を構築
Vagrant + bentoを利用し、Ubuntuで環境を構築することにした。
bentoプロダクトのVagrant.boxを追加する
bentoプロダクトのVagrant.boxを追加する
> vagrant box add bento-Ubuntu-14.04 http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_ubuntu-14.04_chef-provisionerless.box
暫し待つ
ansibleのインストール
ansibleのインストールをする。
> brew install ansible
Vagrantのインストール
バイナリファイルを公式から落としてくると楽。
Vagrantの環境をgit clone
環境整えるのがめんどくさすぎるので
ansible-playbookとVagrantfileを同梱した。
Vagrant環境の立ち上げ・provisioning
リポジトリをgit clone
> git clone git@github.com:futoase/environment-for-tarantool.git
以下のコマンドでVagrant box立ち上げ、provisioning開始
> cd environment-for-tarantool
> vagrant up --provision
手動でtarantoolをインストールし、サンプルを動かしたい場合、
luarockのリストにtarantool/httpを追加しないといけない。
> luarocks --local install http://rocks.tarantool.org/http-scm-1.rockspec
tarantoolのテストをする
tarantool.orgのトップにあるサンプルを実行してみる
#!/usr/bin/env tarantool
box.cfg{}
hosts = box.space.hosts
if not hosts then
hosts = box.schema.create_space('hosts')
hosts:create_index('primary', { parts = {1, 'STR'} })
end
local function handler(self)
local host = self.req.peer.host
local response = {
host = host;
counter = hosts:inc(host);
}
self:render{ json = response }
end
httpd = require('http.server')
server = httpd.new('0.0.0.0', 8080)
server:route({ path = '/' }, handler)
server:start()
サーバの起動
先ほどのファイルをVagrantfileのあるディレクトリに移動し、
サーバの起動を行ってみる。
> cd environment-for-tarantool
> vagrant ssh
> cd /vagrant
# vagrant にログイン後、taranatool.luaを/vagrant以下に作成する
> chmod +x ./tarantool.lua
> ./tarantool.lua
動作確認
リロードするとカウンターが増えていく。
気になる点
tarantool lua package
をみると、YAMLやJSON、他MsgPackやuuidなどウェッブサービスを実現するためのサーバに必要となりそうなライブラリが同梱されている。
これらを使ってテストしたかったが、
環境を整えている時点で終わってしまった... orz