Uruchom Nginx podczas uruchamiania

11

Byłem w stanie zainstalować i uruchomić nginx, i pasażer, ale nie jestem w stanie uruchomić nginx przy każdym ponownym uruchomieniu serwera. Aby rozpocząć proces nginx, po prostu wpisuję sudo / opt / nginx / sbin / nginx . Z mojego zrozumienia wynika, że ​​wszystko, co umieszczę w /etc/init.d z Ubuntu hardy, zostanie wykonane. Czy ktoś zna polecenie, które będzie naśladować to wywołanie z wiersza poleceń?

sudo / opt / nginx / sbin / nginx


źródło
jeśli instalujesz nginx przez apt-get install nginx, wówczas „automatycznie” zaczyna się w czasie rozruchu (ale nie uruchamia się automatycznie, dziwne ...)
rogerdpack

Odpowiedzi:

11

Dzięki za informację, jeśli ktoś chce instrukcje krok po kroku. Przejdź do /etc/init.d i uruchom sudo nano nginx-passenger.sh, a następnie wklej ten kod:

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

Zapisz i wyjdź. Ustaw plik jako wykonywalny, pisząc sudo chmod +x /etc/init.d/nginx-passenger.sh. Możesz sprawdzić, czy skrypt działa, pisząc, sudo /etc/init.d/nginx-passenger.shże uruchomi cały kod w skrypcie. Przed kontynuowaniem sprawdź, czy uruchamia nginx.

Następnie uruchom, sudo update-rc.d nginx-passenger.sh defaultsbędąc jeszcze w katalogu /etc/init.d. Gdy wszystko to będzie na swoim miejscu, zrestartuj serwer, a ngnix powinien być teraz automatycznie spawnowany przy starcie

Paulo Freitas
źródło
Dzięki za bezpośrednie instrukcje. Do tego służy StackExchange.
Ryan,
10

/etc/init.d to tylko lokalizacja do uruchomienia skryptów startowych. Ale posiadanie skryptu nie robi nic automatycznie.

System init używa dowiązań symbolicznych w katalogach /etc/rc#.d do skryptów w folderze /etc/init.d. Nazwa dowiązania symbolicznego musi zaczynać się od litery S, aby uruchomić skrypt z opcją uruchomienia, i przycisku K, aby uruchomić opcję stop, a następnie numeru priorytetu, a następnie nazwy skryptu.

Zobacz więcej informacji
/etc/init.d/README
/etc/rc1.d/README
/etc/rc2.d/README

Alternatywnie możesz wpisać polecenie, które chcesz uruchomić, w skrypcie /etc/rc.local, który jest uruchamiany po uruchomieniu systemu i kończy wykonywanie wszystkich skryptów w folderze /etc/rc2.d/.

3dinfluence
źródło
1
Btw plik /etc/init.d/README instruuje cię, aby użyć polecenia update-rc.d do utworzenia dowiązań symbolicznych w /etc/rc?.d, więc powyższa odpowiedź po prostu informuje, co robi to polecenie. I możesz uruchomić man update-rc.d, aby uzyskać więcej informacji na temat polecenia update-rc.d.
3dinfluence 28.09.2009
heh wygląda na to, że polecenie man-page update-rc.d sugeruje, że powinieneś używać sysv-rc-conf lub bum do zarządzania skryptami init uruchamianymi na różnych poziomach uruchamiania. Zgaduję, że
zgłoś
Wygląda na to, że został już poprawiony w następnej wersji Ubuntu. Strona manuala update-rc.d nie sugeruje już sysv-rc-conf ani bum.
3dinfluence 28.09.2009
5

Aby uruchomić nginx podczas rozruchu: sudo systemctl enable nginx (nie uruchamia się natychmiast)

Aby uruchomić nginx: sudo system start nginx

Ben B
źródło
Ach, nowoczesna odpowiedź (czyli od 2019 roku). Witamy na stronie ButterHub :)
kubańczyk
Dzięki @kubanczyk :)
Ben B
2

Zakładam, że zainstalowałeś nginx

Jeśli masz uruchomione nginx, zatrzymaj proces używając:

  • sudo killcat /usr/local/nginx/logs/nginx.pid

Skrypt początkowy

Skrypt pokazany poniżej pochodzi z instalacji Ubuntu 10.04 i został dostosowany w celu uwzględnienia naszej niestandardowej instalacji nginx. Utwórz skrypt:

sudo nano /etc/init.d/nginx

W pustym pliku umieść następujące elementy:

#! /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

Wykonaj Ponieważ plik init jest skryptem powłoki, musi mieć uprawnienia do wykonywania.

Ustawiamy je tak:

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

update-rc Teraz mamy przygotowany skrypt podstawowy, musimy go dodać do domyślnych poziomów uruchamiania:

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

Dane wyjściowe będą podobne do następujących:

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

Teraz możemy uruchomić, zatrzymać i zrestartować nginx, tak jak w przypadku każdej innej usługi:

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

Skrypt zostanie również wywołany przy ponownym uruchomieniu, więc nginx uruchomi się automatycznie.

Pankaj Sonawane
źródło
1
W Ubuntu 17.10 znalazłem, że muszę to zrobić sudo systemctl enable nginxz /etc/init.dkatalogu.
Erik