Назад | Перейти на главную страницу

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/

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

Я ожидал

sudo /etc/init.d/nginx start

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

netstat -plan

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

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

fuser -n tcp 80 покажет вам PID процесса, использующего порт 80.

Я бы посоветовал вам вставить ваши фактические файлы конфигурации из / 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