らりょすの日記

備忘録と感じたことと。ブログじゃないです,日記です。

サーバであるアプリをデーモンにしたいけどなぜかうまくいかなかった話

デーモンにしようと思ったら/etc/rc.d/init.d/にrcスクリプトおいて、chkconfig hogehoge onして一件落着、のはずなのに、私があまりに馬鹿すぎてちょっと馬鹿なことしちゃったので、メモです

スクリプト

#!/bin/bash
#
# hogehoge        Control script for the HOGEHOGE
#
# chkconfig: - 100 10
# description: HOGEHOGE Control Script
# processname: hoge
# pidfile: /var/www/html/hoge.pid
# config: /etc/baasbox.conf
### BEGIN INIT INFO
# Provides: hoge
# Short-Descriptrin: start and stop hoge
# Description: The HOGE is an extensible server
### END INIT INFO

# Souce function library.
. /etc/init.d/functions

start() {
        echo -n "Starting HOGE: "
        /var/www/html/start
        return 0
}
stop() {
        killproc baasbox
        return 0
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
esac

若干インデントおかしいですけど気になさらず。

動かない

これを/etc/rc.d/init.d/において、chkconfig --add hogeしても怒られる

# chkconfig --add hogehoge
error reading information on service hoge: No such file or directory

原因探る

わがんね・・・

そこでGoogle先生にひたすら聞き続けたら以下の2つの証言を得ることが出来ました
ソースは複数ありました。

  1. はじめのいっぱいコメントアウトしてある部分の#と文字列の間を開けたらだめだぞ
  2. # chkconfig: - 100 10の部分、値が100以上だと起動しないぞ

なるほど・・・・

修正

#!/bin/bash
#
#hogehoge        Control script for the HOGEHOGE
#
#chkconfig: - 90 10
#description: HOGEHOGE Control Script
#processname: hoge
#pidfile: /var/www/html/hoge.pid
#config: /etc/baasbox.conf
### BEGIN INIT INFO
#Provides: hoge
#Short-Descriptrin: start and stop hoge
#Description: The HOGE is an extensible server
### END INIT INFO

#Souce function library.
. /etc/init.d/functions

start() {
        echo -n "Starting HOGE: "
        /var/www/html/start
        return 0
}
stop() {
        killproc baasbox
        return 0
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
esac

んで、もうめんどくさいので、これを適当な場所(俺はよくわかんないまま/opt/hogehoge/)に保存して、`/etc/rc.d/rc.localに直接

bash /opt/hogehoge/hogehoge.sh start

を追記しました。

結果

無事起動しました。おめでとうございました。