起動時にNginxを起動する


11

nginxとパッセンジャーをインストールして実行できましたが、サーバーを再起動するたびにnginxを起動させることができません。nginxプロセスを開始するには、sudo / opt / nginx / sbin / nginxと入力します。私の理解から、ubuntu hardyで/etc/init.dに入れたものはすべて実行されます。このコマンドライン呼び出しを模倣するコマンドを知っている人はいますか?

sudo / opt / nginx / sbin / nginx


apt-get install nginxを介してnginxをインストールすると、起動時に「自動的に」開始されます(ただし、最初は自動で開始されません、奇妙なことに...)
rogerdpack

回答:


10

誰かが段階的な指示を望んでいるなら、情報をありがとう。/etc/init.dに移動して実行しsudo nano nginx-passenger.sh、次のコードを貼り付けます。

#!/bin/bash
# this script starts the nginx process attached to passenger
sudo /opt/nginx/sbin/nginx

保存して終了。と入力して、ファイルを実行可能にしますsudo chmod +x /etc/init.d/nginx-passenger.shsudo /etc/init.d/nginx-passenger.shこれを入力してスクリプトが機能するかどうかをテストするには、スクリプト内のすべてのコードを実行します。続行する前にnginxが起動することを確認してください。

次にsudo update-rc.d nginx-passenger.sh defaults、/ etc / init.dディレクトリにいる間に実行します。これがすべて整ったら、サーバーを再起動すると、ngnixが起動時に自動的に生成されます。


直接の指示をありがとう。それがStackExchangeの目的です。
Ryan

9

/etc/init.dは、起動スクリプトを置く場所にすぎません。しかし、スクリプトがあっても自動的には何も行われません。

initシステムは、/ etc / rc#.dディレクトリ内のシンボリックリンクを使用して、/ etc / init.dフォルダー内のスクリプトにアクセスします。シンボリックリンクの名前は、開始オプションを指定してスクリプトを実行するにはSで、停止オプションを実行するにはKで始まり、その後に優先順位番号とスクリプト名が続く必要があります。

詳細については、以下を参照してください
/etc/init.d/README
/etc/rc1.d/README
/etc/rc2.d/README

または、実行したいコマンドを/etc/rc.localスクリプトに入れることもできます。このスクリプトは、システムが起動し、/ etc / rc2.d /フォルダー内のすべてのスクリプトの実行が完了した後に実行されます。


1
ところで、/ etc / init.d / READMEファイルは、update-rc.dコマンドを使用して/etc/rc?.dにシンボリックリンクを作成するように指示しています。そのため、上記の回答では、そのコマンドの実行内容がわかります。また、update-rc.dコマンドの詳細については、man update-rc.dを実行できます。
3dinfluence 2009

hehは、update-rc.dコマンドのマンページで、sysv-rc-confまたはbumを使用して、さまざまな実行レベルで実行されているinitスクリプトを管理するように提案しているように見えます。/etc/init.d/READMEにバグを
報告

次のUbuntuリリースではすでに修正されているようです。update-rc.d manページは、sysv-rc-confまたはbumを提案しなくなりました。
3dinfluence 2009

5

ブート時にnginxを開始するには:( sudo systemctl enable nginxすぐに開始しません)

nginxを起動するには: sudo system start nginx


ああ、現代の答え(2019年現在、つまり)。サイトへようこそButterHub :)
kubanczyk

ありがとう@kubanczyk :)
ベンB

2

私はあなたがnginxをインストールしたと仮定しています

nginxを実行している場合は、次を使用してプロセスを停止します。

  • sudo kill猫/usr/local/nginx/logs/nginx.pid

初期化スクリプト

以下に示すスクリプトは、Ubuntu 10.04インストールからのもので、nginxのカスタムインストールを考慮に入れるように調整されています。スクリプトを作成してください:

sudo nano /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

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
                --exec $DAEMON
        echo "$NAME."
        ;;
  restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
                /usr/local/nginx/logs/$NAME.pid --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --pidfile \
                /usr/local/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  reload)
      echo -n "Reloading $DESC configuration: "
      start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
          --exec $DAEMON
      echo "$NAME."
      ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0

実行 initファイルはシェルスクリプトであるため、実行権限が必要です。

それらを次のように設定します。

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

update-rc これで基本スクリプトが準備できました。デフォルトの実行レベルに追加する必要があります。

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

出力は次のようになります。

sudo /usr/sbin/update-rc.d -f nginx defaults
 Adding system startup for /etc/init.d/nginx ...
   /etc/rc0.d/K20nginx -> ../init.d/nginx
   /etc/rc1.d/K20nginx -> ../init.d/nginx
   /etc/rc6.d/K20nginx -> ../init.d/nginx
   /etc/rc2.d/S20nginx -> ../init.d/nginx
   /etc/rc3.d/S20nginx -> ../init.d/nginx
   /etc/rc4.d/S20nginx -> ../init.d/nginx
   /etc/rc5.d/S20nginx -> ../init.d/nginx

これで、他のサービスと同様に、nginxを起動、停止、再起動できます。

sudo /etc/init.d/nginx start
...
sudo /etc/init.d/nginx stop
...
sudo /etc/init.d/nginx restart

スクリプトは再起動時にも呼び出されるため、nginxは自動的に起動します。



1
私はubuntu 17.10で私はディレクトリのsudo systemctl enable nginx中からしなければなりませんでした/etc/init.d
エリック



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.