nginxのmakeinstall向けサービス起動スクリプト

makeしてインストールしたnginx 1.11.5がサービスで起動出来なかったのを解決した話

RTMPモジュールの入ったnginxに切り替えようと思い、makeでインストールしたら、先に別のnginxをインストールしたままだった事をすっかり忘れて2重でインストールしてしまい、大変な目にあいました

sudo apt-get remove nginxは効かず、sudo apt-get remove –purge nginxで設定を消してもnginx -vをするとインストールされている事になってしまう事態。幽霊かよ・・・

という事で次の手としてdpkgに手を出し、これで解決。以下のコマンドを実行したらnginxが消えました

sudo dpkg -P --force-remove-reinstreq nginx-full
sudo dpkg -P --force-remove-reinstreq nginx-common

これでnginx -vしても何も表示されず、ps ax |grep nginxしても起動してるプロセスが見つからなかったので完全に消えた模様

で、ここから改めてmakeでインストールを実施

参考にさせていただいたのはこちらのブログから

Raspberry Pi + nginx で低負荷RTMPサーバを構築する

makeのインストールはこちらのブログの通りに実施したらOKでしたが、最後のサービス起動がエラーで動かず・・・

原因を求めて調べまくること数時間・・・結論から書くと、日本語で書かれていた情報では解決出来ませんでした

そこで、海外のブログに飛び、ようやく解決

Ubuntu and Debian – Adding an Nginx init Script

英語なので、とりあえず日本語で手順を書いてみます

最初に起動スクリプトを修正します。既にスクリプトがある場合は、以下のコマンドで開きます

sudo nano /etc/init.d/nginx

nanoでもvimでも構いません。私はここはvimを使いました

次に以下の内容を少し修正してサービス起動のスクリプトを作成します

修正箇所はPATHとDAEMONです

makeでインストールしたnginxの場所を指定してください

私の場合は/usr/local/nginx/sbin/nginxを叩くとnginxが起動します

なので、PATHに/usr/local/nginx/sbin/を追加し、DAEMONを/usr/local/nginx/sbin/nginxにしました

起動スクリプトの保存先は、/etc/init.d/nginxです。拡張子は要りません

#! /bin/sh
 
### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO
 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/nginx
NAME=nginx
DESC=nginx
 
test -x $DAEMON || exit 0
 
# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
    . /etc/default/nginx
fi
 
set -e
 
. /lib/lsb/init-functions
 
case "$1" in
  start)
    echo -n "Starting $DESC: "
    start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
        --exec $DAEMON -- $DAEMON_OPTS || true
    echo "$NAME."
    ;;
  stop)
    echo -n "Stopping $DESC: "
    start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
        --exec $DAEMON || true
    echo "$NAME."
    ;;
  restart|force-reload)
    echo -n "Restarting $DESC: "
    start-stop-daemon --stop --quiet --pidfile \
        /usr/local/nginx/logs/$NAME.pid --exec $DAEMON || true
    sleep 1
    start-stop-daemon --start --quiet --pidfile \
        /usr/local/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
    echo "$NAME."
    ;;
  reload)
      echo -n "Reloading $DESC configuration: "
      start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
          --exec $DAEMON || true
      echo "$NAME."
      ;;
  status)
      status_of_proc -p /usr/local/nginx/logs/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
      ;;
  *)
    N=/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2
    exit 1
    ;;
esac
 
exit 0

次に実行権限を与えます

sudo chmod +x /etc/init.d/nginx

これで起動スクリプトの用意が出来ましたので、デフォルトのランレベルをアップデートします

sudo /usr/sbin/update-rc.d -f nginx defaults

ここまで終わったら、以下のコマンドを実行して動かしてみましょう

sudo /etc/init.d/nginx start

これでブラウザからhttp://nginxのIPアドレスを打って開くとnginxのページが開きます

nginx

一応、停止するのも確認しましょう

sudo /etc/init.d/nginx stop

あとついでにリスタートも

sudo /etc/init.d/nginx restart

最後にOSの再起動を行い、OS起動時に自動的に起動する事を確認しておしまいです。お疲れ様でした