Служба Virtualbox nginx не запускается при запуске, но может быть активирована через терминал

Моя обычная ОС - Windows 7 64-bit, но я использую VirtualBox с последним выпуском Ubuntu. Я пытаюсь использовать виртуальную машину в качестве своего веб-сервера, так как разработка приложения Rails на Windows-сервере в лучшем случае проблематична. Я дошел до того, что все сервисы работают нормально, и я просто просматриваю / обновляю.

Я установил nginx и могу нормально запускать / останавливать сервис через терминал. Однако я добавил стартовый скрипт nginx (ниже) в каталог init.d и добавил его в автозагрузку через sudo update-rc.d nginx defaults, но он просто не запускается при запуске. Совсем. Файл nginx является исполняемым, а его владелец - root (так же, как и моя служба mysql, которая работает ...)

#! /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=/etc/nginx/sbin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/etc/nginx/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 /etc/nginx/logs/$NAME.pid \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /etc/nginx/logs/$NAME.pid \
                --exec $DAEMON
        echo "$NAME."
        ;;
  restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
                /etc/nginx/logs/$NAME.pid --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --pidfile \
                /etc/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  reload)
          echo -n "Reloading $DESC configuration: "
          start-stop-daemon --stop --signal HUP --quiet --pidfile     /etc/nginx/logs/$NAME.pid \
              --exec $DAEMON
          echo "$NAME."
          ;;
      *)
            N=/etc/init.d/$NAME
            echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
            exit 1
            ;;
    esac

    exit 0

К вашему сведению, я знаю, что обычный каталог установки для nginx - это / opt / nginx / sbin, но в моей системе это на самом деле / ​​etc / nginx / sbin. Так что это не то, что не так.

Запуск sudo pgrep nginx сразу после загрузки на рабочий стол не дает никаких результатов, но я могу запустить службу, используя sudo /etc/init.d/nginx start, и она работает просто отлично. При последующих вызовах sudo pgrep nginx я получаю PID процессов nginx.

Почему это не работает?

0
задан 14 February 2014 в 23:24

2 ответа

Из-за другой проблемы, с которой у меня были общие ресурсы NFS, которые не были автоматически смонтированы при запуске, я считаю, что NGINX был либо:

A) На самом деле не запускался при загрузке
или
B) Запускать, но не удается загрузить сайт, поскольку он ссылается на файлы в монтировании NFS

Вероятно, монтирование NFS загружалось через fstab слишком рано в процессе загрузки (до загрузки сетевых возможностей) и fail, что привело к сбою nginx. Исправление проблемы, описанной здесь , побудило меня добавить sudo service nginx start в rc.local после того, как sudo mount -a даст ожидаемые результаты.

0
ответ дан 14 February 2014 в 23:24
  • 1
    Это не работало на меня, я все еще получаю ошибку. – wil 4 August 2015 в 03:06

Я обнаружил эту проблему в Vagrant с помощью виртуальной коробки, следующее исправляет мою проблему:

echo "sudo /etc/init.d/nginx start" | sudo tee -a /etc/rc.local
0
ответ дан 14 February 2014 в 23:24

Другие вопросы по тегам:

Похожие вопросы: