#macos #apache #homebrew #macos-big-sur
#macos #apache #доморощенный #macos-big-sur
Вопрос:
У меня проблема с Apache в Mac OS Big Sur. После обновления ОС Apache (с использованием Brew) больше не работает. Итак, я решил удалить httpd
формулу. Затем протестирована предустановленная версия Apache, и она работает.
- Итак, я остановил предустановленный Apache
sudo apachectl stop
- Выгруженный лаунчер
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
- Обновлен доморощенный
brew update
brew doctor
brew upgrade
- Снова установил httpd
brew install httpd
(установлен успешно) - Запустил 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:
Мое решение:
brew services stop httpd
- Отредактируйте свой
httpd.conf
, возможно, расположенный в/usr/local/etc/httpd/httpd.conf
Listen 80
ServerName localhost
- Убедитесь, что нет других строк с этими ключами, и сохраните файл.
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
.