Моя обычная ОС - 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.
Почему это не работает?
Из-за другой проблемы, с которой у меня были общие ресурсы NFS, которые не были автоматически смонтированы при запуске, я считаю, что NGINX был либо:
A) На самом деле не запускался при загрузке
или
B) Запускать, но не удается загрузить сайт, поскольку он ссылается на файлы в монтировании NFS
Вероятно, монтирование NFS загружалось через fstab слишком рано в процессе загрузки (до загрузки сетевых возможностей) и fail, что привело к сбою nginx. Исправление проблемы, описанной здесь , побудило меня добавить sudo service nginx start
в rc.local после того, как sudo mount -a
даст ожидаемые результаты.
Я обнаружил эту проблему в Vagrant с помощью виртуальной коробки, следующее исправляет мою проблему:
echo "sudo /etc/init.d/nginx start" | sudo tee -a /etc/rc.local