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

запуск nginx на Mac завершается с ошибкой 48: адрес уже используется

Я пытаюсь запустить nginx на Mac OS X с помощью команды sudo nginx

Это не удается со следующей ошибкой

nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] still could not bind()

Я пытаюсь остановить службу Apache, используя sudo apachectl stop

Это вызывает у меня следующую ошибку

launchctl: Error unloading: org.apache.httpd

В соответствии с этот ответ скорее всего, это означает, что Apache уже не запущен

Затем я попытался выяснить, что работает на порту 80, используя sudo lsof -i:80

Это выводит на это

Google    441 jaskaran   68u  IPv4 0xa3f4d891ed1a8373      0t0  TCP 192.168.1.45:50993->www.google:http (ESTABLISHED)
Google    441 jaskaran  143u  IPv4 0xa3f4d891ed054b5b      0t0  TCP 192.168.1.45:51017->www.scorecardresearch.com:http (ESTABLISHED)
Google    441 jaskaran  150u  IPv4 0xa3f4d891eb9a1b5b      0t0  TCP 192.168.1.45:51018->www.scorecardresearch.com:http (ESTABLISHED)
Google    441 jaskaran  152u  IPv4 0xa3f4d891ed1a4373      0t0  TCP 192.168.1.45:51019->www.scorecardresearch.com:http (ESTABLISHED)
Google    441 jaskaran  156u  IPv4 0xa3f4d891ed071b5b      0t0  TCP 192.168.1.45:51020->www.scorecardresearch.com:http (ESTABLISHED)

Вывод этой команды продолжает меняться со временем.

Как заставить работать nginx?

Перед попыткой начать nginxпроверьте, не запущено ли что-то на порте «8080» следующим образом. Я говорю порт 8080, потому что это номер порта, указанный в сообщении об ошибке, которое вы опубликовали:

$ sudo netstat -nlp | grep ':8080' tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2355/nginx
tcp6 0 0 :::8080 :::* LISTEN 2355/nginx

В моем случае это показывает процесс с именем «nginx» с идентификатором процесса 2355, работающий на порту 8080.

Вы можете попробовать выпустить kill -TERM 2355 к идентификатору связанного процесса, чтобы остановить его (если вы не хотите, чтобы он запускался), а затем подтвердите, нажав netstat, как показано выше. Измените «2355» на свой собственный идентификатор процесса.

Ты можешь по-прежнему получите сообщение об ошибке, даже если вы подтвердили, что в этой части ничего не запущено, прежде чем пытаться начать nginx. В этом случае ваш Nginx может иметь конфликтующие записи относительно этого порта. Найдите в своей конфигурации Nginx 8080. Если есть несколько упоминаний, просмотрите документы для соответствующей конфигурации, чтобы убедиться, что вы не использовали ее слишком много раз.