Nginx + uWSGI при новой установке Ubuntu - ошибка привязки порта 80

Я знаю, что это обычная проблема, обычно связанная с apache или другим сервисом, уже работающим на порте 80, и я много раз искал и запускал netstat и до сих пор не понял, почему я получаю эту ошибку.

Я перестроил свой фрагмент, сделал новую установку Ubuntu 10.04 и настроил nginx + uwsgi. Это сработало, и я смог увидеть свой сайт Django. Затем я установил Postgres8.4 и оставшуюся часть стека, необходимую для Geodjango, по этой ссылке.

После того, как это было сделано, я попытался перезапустить nginx, и я получаю эту ошибку:

sudo /etc/init.d/nginx start
Starting nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: still could not bind()

У меня nginx настроен на прослушивание 80. Вот вывод из netstat -l --numeric-ports | grep 80:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN

Выход из sudo lsof +M -i4:

nginx    2330     root    8u  IPv4   3195      0t0  TCP *:www (LISTEN)
nginx    2331 www-data    8u  IPv4   3195      0t0  TCP *:www (LISTEN)
uwsgi    2335        s    4u  IPv4   3259      0t0  TCP localhost:8000 (LISTEN)
uwsgi    2352        s    4u  IPv4   3259      0t0  TCP localhost:8000 (LISTEN)
uwsgi    2353        s    4u  IPv4   3259      0t0  TCP localhost:8000 (LISTEN)
uwsgi    2354        s    4u  IPv4   3259      0t0  TCP localhost:8000 (LISTEN)
uwsgi    2355        s    4u  IPv4   3259      0t0  TCP localhost:8000 (LISTEN)

У кого-нибудь есть другие идеи, как я могу понять, что блокирует порт 80?

редактировать

Вставьте мой /etc/init.d/nginx скрипт здесь: http://dpaste.com/hold/400937/

4 ответа

Решение

Вы не должны были выдать restart в качестве аргумента для вашего сценария инициализации?

Я бы ожидал

sudo /etc/init.d/nginx start

пожаловаться, если nginx уже запущен. Что звучит так, как будто это было.

fuser -n tcp 80 покажет вам PID процесса с использованием порта 80.

netstat -plan

предоставит вам имя процесса, затем используйте killall -9

и перезапустить вас nginx

Я бы посоветовал вам вставить ваши фактические файлы конфигурации из /etc/nginx/sites-enabled. Также вы можете попытаться более точно указать IP-адреса, к которым вы привязываетесь.

Недавно я испытал странность с nginx (8.54) и uWsgi (.96) на серверах узлов Ubuntu 10.10 KVM. Я использовал привязку нелокальных адресов в сочетании с VLAN/ связыванием 802.3ad и мостовым соединением, поэтому теоретически настройка похожа на "срез" от вашего провайдера. Я догадывался, что это связано с nginx, хотя базовые уровни в Ubuntu также претерпевают огромные изменения.

Я бы посоветовал быть максимально явным при настройке nginx. Особенно в среде с несколькими IP-адресами или псевдонимами IP-адресов на одном интерфейсе.

http://linux-ip.net/html/adv-nonlocal-bind.html

Другие вопросы по тегам