nyarn.tech

にゃーん

redisのinstall_server.shをMacでむりやり実行する

install_server.shを実行すると

"Mmmmm... the default config is missing. Did you switch to the utils directory?"

と出て困った人向けです。

とりあえず install_server.sh を読んでみます。

154 #render the templates
155 TMP_FILE="/tmp/${REDIS_PORT}.conf"
156 DEFAULT_CONFIG="${SCRIPTPATH}/../redis.conf"
157 INIT_TPL_FILE="${SCRIPTPATH}/redis_init_script.tpl"
158 INIT_SCRIPT_DEST="/etc/init.d/redis_${REDIS_PORT}"
159 PIDFILE="/var/run/redis_${REDIS_PORT}.pid"
160
161 if [ ! -f "$DEFAULT_CONFIG" ]; then
162         echo "Mmmmm... the default config is missing. Did you switch to the utils directory?"
163         exit 1
164 fi
165

うまくいきそうなのですが、面倒なのでパスを直書きしましょう。

$ diff -us install_server.sh{.orig,}
--- install_server.sh.orig    2017-12-05 02:01:09.000000000 +0900
+++ install_server.sh 2018-01-13 10:23:40.000000000 +0900
@@ -153,9 +153,9 @@

 #render the templates
 TMP_FILE="/tmp/${REDIS_PORT}.conf"
-DEFAULT_CONFIG="${SCRIPTPATH}/../redis.conf"
-INIT_TPL_FILE="${SCRIPTPATH}/redis_init_script.tpl"
+DEFAULT_CONFIG="/usr/local/src/redis-4.0.6/redis.conf"
+INIT_TPL_FILE="/usr/local/src/redis-4.0.6/utils/redis_init_script.tpl"
 INIT_SCRIPT_DEST="/etc/init.d/redis_${REDIS_PORT}"
 PIDFILE="/var/run/redis_${REDIS_PORT}.pid"

 if [ ! -f "$DEFAULT_CONFIG" ]; then
@@ -271,7 +271,7 @@
    echo "No supported init tool found."
 fi

ここでは /usr/local/src/redis-4.0.6 にソースを展開した前提ですが、
よしなにパスを変えてください。

これでうまくいきそうなのですが、残念ながらmacには /etc/init.d がないためまだ実行できません。
とりあえずは /tmp あたりに逃がしましょう。

-INIT_SCRIPT_DEST="/etc/init.d/redis_${REDIS_PORT}"
+INIT_SCRIPT_DEST="/tmp/redis_${REDIS_PORT}"
 PIDFILE="/var/run/redis_${REDIS_PORT}.pid"

 if [ ! -f "$DEFAULT_CONFIG" ]; then
@@ -271,7 +271,7 @@
    echo "No supported init tool found."
 fi

-/etc/init.d/redis_$REDIS_PORT start || die "Failed starting service..."
+# /etc/init.d/redis_$REDIS_PORT start || die "Failed starting service..."

実行もここではコメントアウトしておきます。

このままでは redis が自動で起動しないのですが、どのみちmacで開発環境なので
使いたいときに手で起動してあげればいいかなと思います。
(プロジェクトのディレクトリに生成したファイルを移しておくとよさそう)

tmpに逃がした redis_<port番号>redis_<port番号> start で起動できます。
同様に stop, status, restart で停止、プロセスが起動しているか確認、再起動ができます。

どれも /var/run/redis_<port番号>.pid ファイルが存在するかどうかを確かめているだけでした。

全体の変更はこちらです。

init_server.sh for redis on mac os