Vagrant環境でredis3.0を構築
Redis3.0がStableになったとのことで、Vagrant環境にredisを入れてみた。
ちなみに私はvagrantに詳しくないので、どこかから拾ってきたVagrantfileを流用している。
もっといい、ちゃんとしたやり方がありましたら、どなたか教えてください。
Vagrantfile
Vagrant.configure("2") do |config| config.vm.box = "centos6.5.3" config.vm.box_url = "https://github.com/2creatives/vagrant-centos/" + "releases/download/v6.5.3/centos65-x86_64-20140116.box" # (途中の設定は中略) config.vm.provision :shell, path: "provision/redis-server.sh" end
ここでは、
config.vm.provision :shell, path: "provision/redis-server.sh"
を追加しただけ。config.vm.provisionにて、redisをインストールするスクリプトを読み込んでいる。
そしてこちらが、メインのスクリプト。
redisをDLした後、/opt/配下でmake実行、ついでにサービス設定も行っている。
provision/redis-server.sh
#!/bin/bash redis="redis-3.0.0" redis_home="/opt/${redis}" if [[ ! -d ${redis_home} ]]; then wget http://download.redis.io/releases/${redis}.tar.gz tar xzvf ${redis}.tar.gz mv ${redis} /opt/ pushd ${redis_home} make mkdir -p /etc/redis mkdir -p /var/log/redis cp -p ${redis_home}/utils/redis_init_script /etc/init.d/redis cp -p ${redis_home}/redis.conf /etc/redis/6379.conf sed -i -e "s/daemonize no/daemonize yes/g" /etc/redis/6379.conf sed -i -e "s/pidfile \/var\/run\/redis.pid/pidfile \/var\/run\/redis_6379.pid/g" /etc/redis/6379.conf sed -i -e "s/logfile \"\"/logfile \/var\/log\/redis\/redis.log/g" /etc/redis/6379.conf sed -i -e "s/dir .\//dir \/var\/log\/redis\//g" /etc/redis/6379.conf sed -i -e "3i # chkconfig: - 85 15" /etc/init.d/redis sed -i -e "4i # description: redis-server" /etc/init.d/redis sed -i -e "5i # processname: redis" /etc/init.d/redis ln -s ${redis_home}/src/redis-server /usr/local/bin/redis-server ln -s ${redis_home}/src/redis-cli /usr/local/bin/redis-cli /etc/init.d/redis start chkconfig --add redis chkconfig redis on popd fi
redis3.0のrpmが見つからなかったので、redisの公式サイトからtar.gzをダウンロードする。
wget http://download.redis.io/releases/${redis}.tar.gz
${redis}は適宜インストールしたいバージョンに書き換えてください。
そして/opt配下にインストール。
tar xzvf ${redis}.tar.gz mv ${redis} /opt/ pushd ${redis_home} make
ホントはmake testすべきなんだけど、tclを入れる必要があったり、ちょっと手間だったので飛ばした。
redisのインストール自体はここまで。とってもカンタン。
以降はredisをサービス起動するための設定。ここからが一手間。
vagrantにログインして直接設定すれば苦労しないけど、そしたらvagrant使っている意味ないからね。
ちなみにここからの設定はhttp://blog.livedoor.jp/tattyamm/archives/4147335.htmlを参考にしました。
mkdir -p /etc/redis mkdir -p /var/log/redis cp -p ${redis_home}/utils/redis_init_script /etc/init.d/redis cp -p ${redis_home}/redis.conf /etc/redis/6379.conf
まずは、必要なディレクトリを作成して、サービス起動用のスクリプトと設定ファイルをコピー。
sed -i -e "s/daemonize no/daemonize yes/g" /etc/redis/6379.conf sed -i -e "s/pidfile \/var\/run\/redis.pid/pidfile \/var\/run\/redis_6379.pid/g" /etc/redis/6379.conf sed -i -e "s/logfile \"\"/logfile \/var\/log\/redis\/redis.log/g" /etc/redis/6379.conf sed -i -e "s/dir .\//dir \/var\/log\/redis\//g" /etc/redis/6379.conf
設定ファイルを気合で書き換え。書き換え後の設定は以下のようになります。
daemonize yes # デーモン化の設定を有効化 pidfile /var/run/redis_6379.pid # pidファイル名を変更 logfile /var/log/redis/redis.log # 出力先を標準出力からファイルに変更 dir /var/log/redis/ # dumpファイルを出力するディレクトリを変更
次に起動スクリプトを書き換え。
sed -i -e "3i # chkconfig: - 85 15" /etc/init.d/redis sed -i -e "4i # description: redis-server" /etc/init.d/redis sed -i -e "5i # processname: redis" /etc/init.d/redis ln -s ${redis_home}/src/redis-server /usr/local/bin/redis-server ln -s ${redis_home}/src/redis-cli /usr/local/bin/redis-cli
chkconfigに必要な設定を追加しているのと、あとは起動スクリプト内に記載されているパスにシンボリックリンクを追加。
ここまでで、vagrant upしてログインすると、既にredis-serverが起動している状態になっていた。
ホントはredis-clusterを構築したいなぁと思いつつ、今日はここまで。