しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Windows Azure 仮想マシンで Redis をビルドして動かす(完全版)

ついに Windows Azure 仮想マシンが GA となりましたね。新しい A6, A7 インスタンスが追加されているようですが、基本的には安心と信頼の No.1 ブログを読んだ方が良いです。

Windows Azure 仮想マシン/仮想ネットワークが正式リリース « ブチザッキ

そして自分は SignalR 1.1 と Redis を使ってのスケールアウトを試すつもりだったので、久しぶりに Redis を使おうかなと思ったら redis-server が落ちていました。どうやらインストールが不完全で、サービスが自動起動してなかったようです。

なので、以前に書いた手順を少しアップデートして対応をしてみました。

Windows Azure 仮想マシンで Redis をビルドして動かす - しばやん雑記 で書いたインストール方法から基本的には変わっていません。問題は install_server.sh にありました。

On my machine (Ubuntu 10.04.4 LTS, GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)) there is a difference between

if [ !"$REDIS_CONFIG_FILE" ] ; then

and

if [ ! "$REDIS_CONFIG_FILE" ] ; then
      ^ space here

It works as intended if you add the space between the ! and the tested string in the conditions.

install_server.sh Does Not Work. Always Uses Defaults · Issue #259 · antirez/redis · GitHub

/(^o^)\

という訳で install_server.sh を開いて "!" の後ろにスペースを追加しておきます。これで install_server.sh を実行すると正しくインストールが行われます。

[azureuser@**** utils]$ sudo ./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server


Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
s#^port [0-9]{4}$#port 6379#;s#^logfile .+$#logfile /var/log/redis_6379.log#;s#^dir .+$#dir /var/lib/redis/6379#;s#^pidfile .+$#pidfile /var/run/redis_6379.pid#;s#^daemonize no$#daemonize yes#;
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

前回は chkconfig が正しく設定されていなかったですが、今回は設定に成功しているのでサーバが再起動した場合でも Redis は自動で起動されます。

これで安心して仮想マシンでも Redis が使えるようになりました。