Inicie Nginx al inicio

11

Pude instalar y ejecutar nginx, y passenger pero no puedo hacer que nginx aparezca cada vez que reinicio mi servidor. Para comenzar el proceso nginx, simplemente escriba sudo / opt / nginx / sbin / nginx . Según tengo entendido, todo lo que puse en /etc/init.d con ubuntu hardy se ejecutará. ¿Alguien sabe el comando que imitará esta llamada de línea de comando?

sudo / opt / nginx / sbin / nginx


fuente
si instala nginx a través de apt-get install nginx, entonces se inicia "automáticamente" en el momento del arranque (pero no se inicia automáticamente al principio, extraño ...)
rogerdpack

Respuestas:

10

Gracias por la información, si alguien quiere instrucciones paso a paso. Vaya a /etc/init.d y ejecute sudo nano nginx-passenger.sh, luego pegue este código:

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

guardar y Salir. Haga que el archivo sea ejecutable escribiendo sudo chmod +x /etc/init.d/nginx-passenger.sh. Puede probar para ver si el script funciona escribiendo sudo /etc/init.d/nginx-passenger.shesto, ejecutará todo el código del script. Verifique que inicie nginx antes de continuar.

Luego, ejecute sudo update-rc.d nginx-passenger.sh defaultsmientras está en el directorio /etc/init.d. Una vez que todo esto esté en su lugar, reinicie su servidor y ngnix debería aparecer automáticamente al inicio

Paulo Freitas
fuente
Gracias por las instrucciones directas. Para eso es StackExchange.
Ryan
9

/etc/init.d es solo la ubicación donde viven los scripts de inicio. Pero tener un script allí no hace nada automáticamente.

El sistema init usa los enlaces simbólicos en los directorios /etc/rc#.d a los scripts en la carpeta /etc/init.d. El nombre del enlace simbólico debe comenzar con una S para ejecutar el script con la opción de inicio y K para ejecutar la opción de detención seguido de un número de prioridad y luego el nombre del script.

Consulte lo siguiente para obtener más información
/etc/init.d/README
/etc/rc1.d/README
/etc/rc2.d/README

Alternativamente, puede colocar el comando que desea ejecutar en el script /etc/rc.local que se ejecuta después de que el sistema se inicie y termine de ejecutar todos los scripts en la carpeta /etc/rc2.d/.

3dinfluence
fuente
1
Por cierto, el archivo /etc/init.d/README le indica que use el comando update-rc.d para crear enlaces simbólicos en /etc/rc?.d, por lo que la respuesta anterior simplemente le permite saber qué está haciendo ese comando. Y puede ejecutar man update-rc.d para obtener más información sobre el comando update-rc.d.
3dinfluence
heh parece que la página de manual del comando update-rc.d sugiere que debe usar sysv-rc-conf o bum para administrar los scripts de inicio que se ejecutan en varios niveles de ejecución. Supongo que presentaré un error en /etc/init.d/README
3dinfluence
Parece que ya se ha corregido en la próxima versión de Ubuntu. La página de manual update-rc.d ya no sugiere sysv-rc-conf o bum.
3dinfluence
5

Para iniciar nginx en el arranque: sudo systemctl enable nginx (no lo inicia inmediatamente)

Para iniciar nginx: sudo system start nginx

Ben B
fuente
Ah, la respuesta moderna (moderna a partir de 2019, es decir). Bienvenido al sitio ButterHub :)
kubanczyk
Gracias @kubanczyk :)
Ben B
2

Supongo que has instalado nginx

Si tiene nginx ejecutándose, detenga el proceso usando:

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

Script de inicio

El script que se muestra a continuación es de una instalación de Ubuntu 10.04 y se ha adaptado para tener en cuenta nuestra instalación personalizada de nginx. Por favor crea el script:

sudo nano /etc/init.d/nginx

Dentro del archivo en blanco coloque lo siguiente:

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

Ejecutar Como el archivo init es un script de shell, necesita tener permisos ejecutables.

Los configuramos así:

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

update-rc Ahora que tenemos preparado el script base, debemos agregarlo a los niveles de ejecución predeterminados:

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

El resultado será similar a esto:

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

Ahora podemos iniciar, detener y reiniciar nginx como con cualquier otro servicio:

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

El script también se llamará al reiniciar, por lo que nginx se iniciará automáticamente.

Pankaj Sonawane
fuente
1
Encontré con ubuntu 17.10 tuve que hacerlo sudo systemctl enable nginxdesde dentro del /etc/init.ddirectorio.
Erik