yrmcdsインストールの備忘。
VMの準備
- Vagrant box の初期化
> vagrant box add ubuntu14_04 https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
> vagrant init ubuntu14_04
【追記】こちらから取ってくるように変更。
> vagrant init ubuntu/trusty64
- private network の有効化
Vagrantfile の # config.vm.network "private_network", ip: "192.168.33.10"
のコメントアウトを外す。
ついでにIPもデフォルトから変更する。(すでに 192.168.33.10 は別のVMで使っているという想定)
今回は 192.168.33.11 にしておこう。
sed -i -e 's/#\ config\.vm\.network\ "private_network",\ ip:\ "192\.168\..\{2\}\..\{2\}"/config\.vm\.network\ "private_network",\ ip:\ "192\.168\.33\.11"/' Vagrantfile
- VM起動、ログイン
> vagrant up
> vagrant ssh
この辺まではいつものやーつ。
yrmcds のインストール
- yrmcdsダウンロード・インストール
> mkdir yrmcds; cd yrmcds
> wget https://github.com/cybozu/yrmcds/archive/v1.1.1.tar.gz
> tar xzf v1.1.1.tar.gz
> cd yrmcds-1.1.1
> make
echo -n 'static char COPYING[] = R"(' > COPYING.hpp
cat COPYING >>COPYING.hpp
echo ')";' >>COPYING.hpp
g++ -std=gnu++11 -O2 -gdwarf-3 -Wall -Wnon-virtual-dtor -Woverloaded-virtual -I. -DCACHELINE_SIZE=64 -DDEFAULT_CONFIG=/usr/local/etc/yrmcds.conf -DUSE_TCMALLOC -c -o src/main.o src/main.cpp
make: g++: Command not found
make: *** [src/main.o] Error 127
おや、エラー。
依存ライブラリを先に入れなければ。
- C++11 compiler インストール
> sudo apt install g++
> g++ --version
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- libgoogle-perftools-dev インストール
> sudo apt-get install libgoogle-perftools-dev
- 再度、yrmcdsインストール
> make
> sudo make install
> which yrmcdsd
/usr/local/sbin/yrmcdsd
- yrmcds 起動
> sudo /usr/local/sbin/yrmcdsd
2015-05-15 12:12:45 ERROR [yrmcds::config::bad_config] Not a directory: /var/tmp/yrmcds
Exception [yrmcds::config::bad_config] Not a directory: /var/tmp/yrmcds
ディレクトリが無いと言われる。これはこちらで作成しないといけないのかな?
> mkdir /var/tmp/yrmcds
> sudo /usr/local/sbin/yrmcdsd
お、起動したっぽい。
ホストPCから接続確認
memcached 互換なので、telnet で繋いでみよう。
> telnet 192.168.33.11 11211
Trying 192.168.33.11...
Connected to 192.168.33.11.
Escape character is '^]'.
stats items
STAT items:1:number 0
STAT items:1:age 0
STAT items:1:evicted 0
STAT items:1:conflicts 0
STAT items:1:largest 0
END
繋がった!
memcached 用ライブラリなどで読み書きを試したり、遊んでみよう。
Ansible で環境構築
上記の設定(依存ライブラリインストール、yrmcdsインストール、起動に必要なディレクトリ作成)をAnsible Playbookで書いてみた。
yrmcds.yml
---
- hosts: yrmcds
user: vagrant
vars:
workdir: ~/yrmcds
version: 1.1.1
tasks:
- name: install dependency modules
apt: pkg={{item}}
with_items:
- g++
- libgoogle-perftools-dev
sudo: yes
- name: make working directory
file: path={{workdir}} state=directory mode=0755
- name: download yrmcds
get_url: url="https://github.com/cybozu/yrmcds/archive/v{{version}}.tar.gz" dest={{workdir}}/yrmcds.tar.gz
- name: extract yrmcds
command: tar xfz {{workdir}}/yrmcds.tar.gz chdir={{workdir}}
- name: make yrmcds
command: make chdir={{workdir}}/yrmcds-{{version}}
- name: install yrmcds
command: sudo make install chdir={{workdir}}/yrmcds-{{version}}
- name: make tmp directory
file: path=/var/tmp/yrmcds state=directory mode=0755