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-адресов на одном интерфейсе.