CLOVER🍀

That was when it all began.

Ubuntu Linux 14.04 LTSにRedis 3をインストールする

Ubuntu Linux 14.04 LTSへRedis 3をインストールしてみます。

Redis

方法は2つ、ソースコードからコンパイルする方法と、apt-getでサードパーティのリポジトリからインストールする方法。

今回対象とするRedisは、3.0.6とします。

ソースコードからインストール

とりあえず、下準備的にコンパイル環境を作成。

$ sudo apt-get install -y wget gcc make

以下より、Redisのアーカイブを取得。
Download

$ wget -q http://download.redis.io/releases/redis-3.0.6.tar.gz
$ tar -zxvf redis-3.0.6.tar.gz

make。

$ cd redis-3.0.6
$ make

あ、今回のRedisのインストール先は、/opt/redisとします。

$ sudo mkdir /opt/redis

インストール。

$ sudo make PREFIX=/opt/redis install

make時のオプションなどは、アーカイブに同梱されているREADMEを見ましょう。

起動。

$ /opt/redis/bin/redis-server 
6128:C 16 Jan 07:56:07.476 # Warning: no config file specified, using the default config. In order to specify a config file use /opt/redis/bin/redis-server /path/to/redis.conf
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.0.6 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 6128
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

6128:M 16 Jan 07:56:07.477 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
6128:M 16 Jan 07:56:07.478 # Server started, Redis version 3.0.6
6128:M 16 Jan 07:56:07.478 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
6128:M 16 Jan 07:56:07.478 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
6128:M 16 Jan 07:56:07.478 * The server is now ready to accept connections on port 6379

redis-cliから接続。

$ /opt/redis/bin/redis-cli 
127.0.0.1:6379> SET key1 value1
OK
127.0.0.1:6379> GET key1
"value1"

OKそうですね。

apt-getでインストール

RedisはUbuntu Linuxへapt-getでインストールすることもできますが

$ sudo apt-get install redis-server

これでは、ちょっと古いRedisがインストールされます。

$ redis-server 
[166] 16 Jan 07:59:56.174 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 2.8.4 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 166
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

[166] 16 Jan 07:59:56.176 # Server started, Redis version 2.8.4
[166] 16 Jan 07:59:56.176 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
[166] 16 Jan 07:59:56.176 * The server is now ready to accept connections on port 6379

というわけで、ここはサードパーティのリポジトリを使用します。

以下のコマンドでリポジトリを追加後、redis-serverをインストール。

$ sudo add-apt-repository ppa:chris-lea/redis-server
$ sudo apt-get update
$ sudo apt-get install redis-server

起動。

$ redis-server 
4089:C 16 Jan 08:23:53.710 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.0.6 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 4089
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

4089:M 16 Jan 08:23:53.711 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
4089:M 16 Jan 08:23:53.712 # Server started, Redis version 3.0.6
4089:M 16 Jan 08:23:53.712 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
4089:M 16 Jan 08:23:53.712 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
4089:M 16 Jan 08:23:53.712 * The server is now ready to accept connections on port 6379

無事、Redis 3がインストールされました。

参考)
How To Install Redis Server 3.0.0 On Ubuntu 14.10, Ubuntu 14.04, Ubuntu 12.04 And Derivative Systems | LinuxG.net

オマケ

ソースコードからインストールする方は、Dockerfileも作成してみました。
※なぜかここは、ubuntu:latest

Dockerfile

FROM ubuntu:latest

ENV REDIS_VERSION 3.0.6
ENV REDIS_HOME /opt/redis

WORKDIR ${REDIS_HOME}

RUN mkdir -p ${REDIS_HOME}

RUN apt-get update

RUN cd /opt && \
    apt-get install -y \
     wget \
     gcc \
     make \
     && \
    wget -q http://download.redis.io/releases/redis-${REDIS_VERSION}.tar.gz && \
    tar -zxvf redis-${REDIS_VERSION}.tar.gz && \
    mv redis-${REDIS_VERSION} redis-src && \
    cd redis-src && \
    make && \
    make PREFIX=${REDIS_HOME} install

EXPOSE 6379

ENTRYPOINT ["/opt/redis/bin/redis-server"]