Запустіть Nginx при запуску


11

Мені вдалося встановити і запустити nginx і пасажир, але я не в змозі з'явити nginx, коли я перезавантажую сервер. Для запуску процесу nginx я просто наберіть sudo / opt / nginx / sbin / nginx . З мого розуміння, все, що я вкладаю в /etc/init.d з ubuntu hardy, буде виконано. Хтось знає команду, яка буде імітувати цей виклик командного рядка?

sudo / opt / nginx / sbin / nginx


якщо ви встановите nginx через apt-get install nginx, він "автоматично" запускається під час завантаження (але не починається автоматично спочатку, дивним чином ...)
rogerdpack

Відповіді:


11

Дякуємо за інформацію, якщо хтось хоче покрокові інструкції. Перейдіть до /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.sh. Ви можете перевірити, чи працює сценарій, ввівши sudo /etc/init.d/nginx-passenger.shце, буде виконувати весь код у скрипті. Переконайтеся, що він запускає nginx, перш ніж продовжувати.

Потім запустіть sudo update-rc.d nginx-passenger.sh defaultsще в каталозі /etc/init.d. Після того, як все це на місці, перезавантажте ваш сервер і ngnix тепер повинен бути автоматично породжений при запуску


Дякую за прямі вказівки. Ось для чого і StackExchange.
Райан

10

/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
Btw /etc/init.d/README-файл вказує вам використовувати команду update-rc.d для створення символічних посилань у /etc/rc?.d, тому наведена вище відповідь просто дає вам знати, що ця команда робить. І ви можете запустити man update-rc.d для отримання додаткової інформації про команду update-rc.d.
3вплив

heh виглядає так, що команда update-rc.d manpage пропонує, що вам слід використовувати sysv-rc-conf або bum для управління сценаріями init, які виконуються на різних рівнях запуску. Здогадуюсь, я подам помилку на /etc/init.d/README
3dinfluence

Схоже, це вже виправлено у наступному випуску Ubuntu. Сторінка man-update.rc.d більше не пропонує sysv-rc-conf або bum.
3вплив

5

Щоб запустити nginx під час завантаження: sudo systemctl enable nginx (не запускається відразу)

Щоб запустити nginx: sudo system start nginx


Ах, сучасна відповідь (сучасна станом на 2019 рік, тобто). Ласкаво просимо на сайт ButterHub :)
kubanczyk

Дякую @kubanczyk :)
Ben B

2

Я припускаю, що ви встановили nginx

Якщо у вас працює nginx, то зупиніть процес, використовуючи:

  • sudo killкішка /usr/local/nginx/logs/nginx.pid

Сценарій Init

Сценарій, показаний нижче, призначений для встановлення 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каталогу.
Ерік



0

Для довідки: я просто дотримувався інструкцій та сценарію для Maverick, наданих Linode на http://library.linode.com/frameworks/ruby-on-rails-nginx/ubuntu-10.10-maverick


Ласкаво просимо до помилки сервера! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
freiheit
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.