Mac OS X Mountain Lion не имеет окна общего доступа через Интернет в меню системных настроек общего доступа. В Интернете подробно обсуждается, что сервер Apache доступен и что его можно включить вручную в командной строке или с помощью удобной панели Prefs. Это работает, пока компьютер не спит. Но когда мой компьютер переходит в спящий режим, сервер перестает работать, несмотря на то, что пробуждение для доступа к сети отмечено на панели настроек энергосбережения. Из обсуждения Bonjour я вижу, что эта проблема, вероятно, связана с тем, что Apache не зарегистрирован в Bonjour. Это кажется вероятным? Если нет, сделайте несколько предложений. Подключение осуществляется через проводной Ethernet.
Если проблема заключается в регистрации в Bonjour, я хотел бы знать, как ее зарегистрировать. Вы хорошо описали dns-sd, а в описании команды сказано: dns-sd -R Name Type Domain Port [TXT ...] (Зарегистрировать службу) ", но я не знаю, что использовать для" Name " или "Тип", или формат домена. Я попробовал выполнить поиск по dns-sd -B и не нашел ничего, что можно было бы использовать в качестве модели, и это не отображается в браузере Bonjour.
Мы ценим любые предложения.
Правильное решение этой проблемы (как указал @Zoredache) - настроить сервер так, чтобы он никогда не спал. Может быть способ активировать его по требованию, но он будет медленным, слишком сложным и потенциально ненадежным.
Теперь о "Пробуждении для доступа к сети": он не пробуждается только при любом старом доступе к сети, он пробуждается, когда получает специально отформатированный "волшебный пакет" велел ему проснуться. Входящие HTTP-запросы не в этом формате, поэтому они не будут выполнять свою работу. (Примечание: на самом деле это пакет TCP SYN, который инициирует сеанс HTTP, который должен быть в этом формате ... за исключением того, что даже это не сработает, потому что ваш компьютер не отвечает на ARP во время сна, поэтому маршрутизатор не знал бы, как послать ему SYN ...)
А Bonjour Sleep Proxy предоставляет возможный обходной путь для этого (хотя, как я сказал выше, это будет медленным и т. д.). Если у вас есть устройство в вашей локальной сети, которое предоставляет прокси-службу сна, Mac может зарегистрировать свои службы, рекламируемые Bonjour, с помощью прокси-сервера, когда он переходит в спящий режим. Пока он спит, прокси рекламирует ваши услуги через Bonjour и отвечает на ARP от имени вашего компьютера. Когда запрос (ну, на самом деле SYN-пакет) приходит для одной из ваших служб, прокси-сервер отправляет волшебный пакет, чтобы разбудить ваш компьютер, а затем переключает входящее соединение с вашим компьютером.
Я не тестировал это, но я понимаю, что для того, чтобы это работало, вам понадобится устройство, которое предоставляет прокси-службу сна Bonjour (хотя, по-видимому, на некоторых компьютерах Mac она встроена в интерфейс Ethernet), а затем зарегистрируйте службу на порту 80 с Bonjour:
dns-sd -R "some arbitrary name" _http._tcp local 80 &
Обратите внимание, что "&" запускает это в фоновом режиме; Программа dns-sd должна быть запущена, чтобы регистрация продолжалась. Другой вариант - отредактировать файл launchd .plist, чтобы apache создавал регистрацию Bonjour. Но я не собираюсь об этом беспокоиться, потому что это все равно неправильное решение; правильное решение - это вообще не позволять серверу спать.