Перезапуск nginx: nginxnginx: [emerg] bind() до 0.0.0.0:80 не удалось (98: адрес уже используется)

Когда я пытаюсь перезапустить nginx с помощью sudo /etc/init.d/nginx restart, я получаю сообщение от темы.

Я обнаружил, что причина, скорее всего, в том, что скрипт не знает, как остановить демона, потому что файл pid (/var/run/nginx.pid) не создается при запуске.

У меня есть две установки на двух разных серверах... одна была скомпилирована из исходников, а другая пришла с пассажиром phusion.

Я попробовал эту команду:

start-stop-daemon --start --quiet --pidfile /var/run/nginx.pid --exec /usr/sbin/nginx -- -c /etc/nginx/nginx.conf

на обеих машинах и на одной pid файл создается а на другой нет - на той машине пути немного разные (но не думаю что это актуально):

start-stop-daemon --start --quiet --pidfile /var/run/nginx.pid --exec /opt/nginx/sbin/nginx -- -c /opt/nginx/conf/nginx.conf

Процесс запускается, а pid не пишется...

Я на Дебиане...

Какие-либо предложения?


person davidhq    schedule 13.04.2013    source источник


Ответы (3)


Решение состоит в том, чтобы раскомментировать эту строку в nginx.conf:

pid        /var/run/nginx.pid;

Похоже, разные установки делают это по-разному, но правильно раскомментировать.

person davidhq    schedule 13.04.2013

Я смог исправить это, выполнив следующую команду fuser

$ sudo fuser -k 80/tcp

который убивает любой процесс, использующий порт 80 .. надеюсь, больше ничего не испортил.

Это заслуга: https://goo.gl/6oc0xD

person snlpnstslocn    schedule 13.05.2015

$ sudo nginx -t 

чтобы увидеть все процессы, иногда у вас нет полного разрешения

person user7561321    schedule 14.02.2017