LoginSignup
1
1

More than 5 years have passed since last update.

Ubuntu14.04 に yrmcds を入れて遊ぶ。

Last updated at Posted at 2015-05-15

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
1
1
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
1
1