Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@futoase

【Lua】tarantool のご紹介

tarantoolのご紹介

tarantoolというのがあって、触ってみたかったので触ってみる。

Key-value storeとapplicationサーバが
合わさったフレームワークのようだ。

本当はMacOS X上でやりたかったが...

MacOS Xであれば、homebrewでtaranntoolをビルドできるらしかった。
が、この記事を書いている時点では、ビルドが通らない!
なんでだって思ったらPRが出てた...

Mac OS support #638

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のトップにあるサンプルを実行してみる

tarantool.lua
#!/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

動作確認

リロードするとカウンターが増えていく。

Screen Shot 2014-12-01 at 20.56.13.png

気になる点

tarantool lua package
をみると、YAMLJSON、他MsgPackuuidなどウェッブサービスを実現するためのサーバに必要となりそうなライブラリが同梱されている。

これらを使ってテストしたかったが、
環境を整えている時点で終わってしまった... orz

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?