Я знаю, что это обычная проблема, обычно связанная с 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-адресами с псевдонимами на одном интерфейсе.