Рестартирането на nginx: nginxnginx: [emerg] bind() към 0.0.0.0:80 неуспешно (98: Адресът вече се използва)

Когато се опитам да рестартирам nginx със sudo /etc/init.d/nginx restart, получавам съобщението от темата.

Открих, че причината най-вероятно е, че скриптът не знае как да спре демона, защото pid файлът (/var/run/nginx.pid) не е създаден при стартиране.

Имам две инсталации на два различни сървъра... единият беше компилиран от източника, а другият дойде с phusionpassion.

Опитах тази команда:

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 не е написан...

Аз съм с Debian...

Някакви предположения?


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


Отговори (3)


Решението е да откоментирате този ред в nginx.conf:

pid        /var/run/nginx.pid;

Изглежда, че различните инсталации го правят по различен начин, но правилното нещо е да го разкоментирате.

person davidhq    schedule 13.04.2013

Успях да поправя това, като изпълних следната команда за изпичане

$ 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