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のページが開きます
一応、停止するのも確認しましょう
sudo /etc/init.d/nginx stop
あとついでにリスタートも
sudo /etc/init.d/nginx restart
最後にOSの再起動を行い、OS起動時に自動的に起動する事を確認しておしまいです。お疲れ様でした