Как перезапустить nginx на OS X
Я использую nginx
для OS X 10.8. Только что установленный nginx
, но не может найти способ перезапуска nginx, кроме kill nginx_pid
say kill 64116
. Интересно, есть ли способы перезагрузки nginx
.
Нашел некоторые методы в Google и SO, но не работал:
nginx -s restart
sudo fuser -k 80/tcp ; sudo /etc/init.d/nginx restart
Сообщение об ошибке для nginx -s restart
есть
nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)
Иногда также получаем эту ошибку msg:
nginx: invalid option: "-s restart"
Ответы
Ответ 1
Каково ваше местоположение файла nginx pid? Это указано в файле конфигурации, по умолчанию задано время компиляции в config script. Вы можете найти его как таковой:
find / -name nginx.pid 2>/dev/null
(должен выдаваться при запуске nginx)
Решение:
sudo mkdir -p /usr/local/var/run/
ln -s /current/path/to/pid/file /usr/local/var/run/nginx.pid
Ответ 2
Попробуйте запустить sudo nginx
перед запуском nginx.
Ответ 3
Чтобы перезагрузить конфигурационные файлы:
sudo nginx -s reload
Чтобы полностью перезапустить nginx
:
sudo nginx -s quit
sudo nginx
Подробнее
Нет сигнала restart
для nginx. В документах приведены сигналы, которые принимает мастер-процесс:
SIGINT, SIGTERM Shut down quickly.
SIGHUP Reload configuration, start the new worker process with a new configuration, and gracefully shut down old worker processes.
SIGQUIT Shut down gracefully.
SIGUSR1 Reopen log files.
SIGUSR2 Upgrade the nginx executable on the fly.
SIGWINCH Shut down worker processes gracefully.
Предположительно вы можете отправить эти сигналы в идентификатор процесса вручную, но команда nginx
имеет флаг nginx -s <signal>
, который отправляет вам сигналы мастер-процессу. Ваши варианты:
stop SIGTERM
quit SIGQUIT
reopen SIGUSR1
reload SIGHUP
Не нужно futz с pid вручную.
Изменить: просто понял, что большая часть этой информации уже была в комментариях к другим ответам. Оставляя это здесь, чтобы обобщить ситуацию.
Ответ 4
Я делаю это так:
Сначала убейте прогресс
ps aux | grep nginx
kill -9 {pid}
Затем запустите nginx
nginx
Это работает!
Ответ 5
В качестве будущего ресурса вы можете обратиться к http://wiki.nginx.org/CommandLine
Nginx
, вероятно, работает от имени root, поэтому для его использования вам потребуется запустить вариант следующей команды.
sudo nginx -s stop | reload | quit | reopen
Обычно нет необходимости перезапускать Nginx
, например, Apache
. Если вы изменили файл конфигурации, вы можете просто выбрать вариант перезагрузки.
Ответ 6
Попробуйте следующее:
sudo nginx -s stop
а затем:
sudo nginx
Кажется, что nginx отслеживает свое состояние, если вы остановите его дважды, он будет жаловаться. Но выше это работало для меня.
Ответ 7
проверьте, существует ли этот каталог:
/usr/local/var/run
эта ошибка может возникнуть, когда nginx попытается инициализировать файл pid в
локализации, которая не существует.
Ответ 8
Здесь есть ошибка. В зависимости от того, выполняется ли nginx при изменении/перезапуске apache и/или изменении конфигураций nginx, этот файл (который по существу является только указателем идентификатора процесса) может быть уничтожен.
При попытке отправить любой сигнал на nginx, например
nginx -s quit;
nginx -s stop;
nginx -s reload;
nginx использует этот файл для ссылки на идентификатор процесса, которому необходимо отправить сигнал. Если файл отсутствует, связь между активным запуском процесса nginx и приложения cli эффективно нарушена.
На самом деле я оказался в состоянии, когда два процесса nginx выполнялись одновременно, и оба были убиты.
Чтобы обойти это, вы можете либо принудительно завершить существующие процессы nginx через Activity Monitor (затем запустить nginx и создать приложение cli для создания нового файла nginx.pid), либо если вам действительно нужно поддерживать nginx, но хотите запустить nginx -s reload - вручную создать файл в пути /run под названием nginx.pid и вставить PID текущих запущенных процессов nginx (полученных через Activity Monitor).
Ответ 9
Чтобы перезагрузить пользовательский файл конфигурации, используйте
nginx -s reload -c /etc/nginx/conf.d/<config file>.conf
Ответ 10
Это может означать, что nginx уже остановлен - пока не работает.
Сначала проверьте, запущен ли nginx, выполните:
$ ps aux | grep nginx
Ответ 11
я получил ту же ошибку ссылку, я пытался много способов исправить это, но он не работает
после этого я запускаю командную строку, и она работает хорошо:
nginx -c/usr/local/etc/nginx/nginx.conf
информация, которую я получил отсюдаhttps://blog.csdn.net/wn1245343496/article/details/77974756
Ответ 12
Один из способов остановки или перезагрузки - выполнить следующую команду:
Для остановки:
sudo /usr/local/nginx/sbin/nginx -s stop
Запустите перезагрузку только при запуске nginx:
sudo /usr/local/nginx/sbin/nginx -s reload
Выполняя, как указано выше, вы не получите nginx: [error] open() "/usr/local/var/run/nginx.pid" этот вопрос
Ответ 13
$ sudo nginx -c /usr/local/etc/nginx/nginx.conf
$ sudo nginx -s reload
Ссылка на источник: https://blog.csdn.net/github_33644920/article/details/51733436