Mac OS Big Sur — доморощенный Apache — 48) уже используемый адрес: AH00072: make_sock: не удалось привязать к адресу 0.0.0.0:8080

#macos #apache #homebrew #macos-big-sur

#macos #apache #доморощенный #macos-big-sur

Вопрос:

У меня проблема с Apache в Mac OS Big Sur. После обновления ОС Apache (с использованием Brew) больше не работает. Итак, я решил удалить httpd формулу. Затем протестирована предустановленная версия Apache, и она работает.

  1. Итак, я остановил предустановленный Apache sudo apachectl stop
  2. Выгруженный лаунчер sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
  3. Обновлен доморощенный
    • brew update
    • brew doctor
    • brew upgrade
  4. Снова установил httpd brew install httpd (установлен успешно)
  5. Запустил httpd sudo brew services start httpd

Однако, проверяя статус sudo brew services list , я вижу, что служба httpd имеет статус error . Когда я пытаюсь запустить apache с помощью sudo apachectl start , я получаю сообщение об ошибке:

 (48)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:8080
no listening sockets available, shutting down
AH00015: Unable to open logs
 

Я проверил, может быть, на порту 8080 работает что-то еще lsof -i TCP:8080 , но это не так.

Я проверил, какой Apache используется ( which apachectl ), и, похоже, он правильный ( /usr/local/bin/apachectl )

Независимо от того, какой порт я пытаюсь использовать, всегда появляется ошибка, что адрес уже используется.

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

Ответ №1:

Я столкнулся с той же проблемой. Похоже, что привязки INADDR_ANY (0.0.0.0) завершаются ошибкой.

Чтобы обойти ошибку привязки, я изменил в /usr/local/etc/httpd/httpd.conf следующей строке:

 Listen 8080
 

Для:

 Listen 127.0.0.1:8080
 

После этого я мог запустить apache без ошибки привязки, используя следующую команду:

 sudo apachectl -k start
 

Комментарии:

1. У меня тоже сработало! Большое спасибо!

Ответ №2:

У меня была та же проблема, но мне нужно было запустить apache на порту 80. Сначала я заставил его работать на 8080 с помощью решения, предложенного @FrankStappers, с помощью:

 Listen 127.0.0.1:8080
ServerName localhost:8080
 

Затем я попытался изменить порт на 80 в директивах Listen и ServerName . Перезапуск оставил меня с этими ошибками:

 (13)Permission denied: AH00072: make_sock: could not bind to address 127.0.0.1:80
no listening sockets available, shutting down
AH00015: Unable to open logs
 

В конечном итоге изменение прослушивания и имени сервера следующим образом исправило это:

 Listen 0.0.0.0:80
ServerName localhost
 

Решение задокументировано в разделе «Устранение неполадок, не связанных с Sudo httpd Services» https://getgrav.org/blog/macos-bigsur-apache-multiple-php-versions

Ответ №3:

Мое решение:

  1. brew services stop httpd
  2. Отредактируйте свой httpd.conf , возможно, расположенный в /usr/local/etc/httpd/httpd.conf
 Listen 80
ServerName localhost
 
  1. Убедитесь, что нет других строк с этими ключами, и сохраните файл.
  2. brew services start httpd

Ответ №4:

Я также столкнулся с этой проблемой после перезапуска моего Mac (после недели использования Big Sur). Мне пришлось полностью удалить httpd из Brew, убить все процессы, используя порт 80, переустановить httpd , изменив httpd.conf , как упоминал Фрэнк, и только тогда я смог заставить его работать (без необходимости sudo ). :

Короче говоря, сначала измените эту строку на httpd.conf :

Listen localhost:80

И затем вот список команд, которые я запустил:

 brew uninstall httpd
kill $(lsof -ti:80)
brew install httpd
 

Если служба не запущена. Вы можете сделать: brew services start http

Или: /usr/local/opt/httpd/bin/httpd -k start

Пожалуйста, обратите внимание, у меня уже была рабочая система до этого. Для получения полных инструкций по установке следуйте удивительному руководству по getgrav. Они заслуживают большой похвалы за такой полный учебник и их поддержку в комментариях!

P.S: Вот почему вы не должны использовать sudo для запуска httpd .