Wake on Demand для сервера Apache в OS X 10.8

В Mac OS X Mountain Lion нет поля "Общий веб-доступ" в меню "Системные настройки общего доступа". В Интернете подробно обсуждается, что сервер Apache доступен, и что его можно включить вручную в командной строке или с помощью удобной панели Prefs. Это работает, когда компьютер не спит. Но когда мой компьютер переходит в спящий режим, сервер перестает работать, даже если Wake for Network Access включен в Pref Pane Energy Saver. Из обсуждения Bonjour я вижу, что эта проблема, вероятно, связана с тем, что Apache не зарегистрирован в Bonjour. Это звучит правдоподобно? Если нет, пожалуйста, сделайте несколько предложений. Соединение через проводной Ethernet.

Если регистрация в Bonjour является проблемой, я хотел бы знать, как ее зарегистрировать. Вы дали хорошее описание dns-sd, а в описании команды указано dns-sd -R Имя Тип Домен Порт [TXT...] (Зарегистрировать службу)", но я не знаю, что использовать для" Имя " или "Тип", или формат домена. Я попытался выполнить некоторые поиски dns-sd -B и не нашел ничего, что я мог бы использовать в качестве модели, и он не отображается в Bonjour Browser.

Мы ценим любые предложения.

1 ответ

Правильное решение этой проблемы (как указывал @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. Но я не буду беспокоиться об этом, потому что это не правильное решение в любом случае; правильное решение - не дать серверу спать в первую очередь.

Другие вопросы по тегам