Как перезапустить 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" этот вопрос