Despertar sob demanda para o servidor Apache no OS X 10.8 [fechado]

2

O Mac OS X Mountain Lion não possui uma caixa Compartilhamento na Web no menu Preferências do sistema de compartilhamento. É amplamente discutido na web que o servidor Apache está disponível e que pode ser ativado manualmente na linha de comando ou usando um Painel de Prefs conveniente. Isso funciona enquanto o computador está acordado. Mas, quando meu computador entra no modo de suspensão, o servidor pára de funcionar, embora o recurso Wake for Network Access esteja marcado no painel Pref. Economia de energia. A partir da discussão sobre Bonjour, vejo que esse problema provavelmente resulta do fato de que o Apache não está registrado no Bonjour. Isso parece provável? Se não, por favor, faça algumas sugestões. A conexão é via ethernet com fio.

Se o registro no Bonjour for o problema, eu gostaria de saber como registrá-lo. Você deu uma boa descrição do dns-sd, e a descrição do comando diz dns-sd -R Nome Tipo Domain Port [TXT ...] (Registrar um serviço) ", mas não sei o que usar para" Name " ou "Type", ou o formato do domínio. Eu tentei algumas pesquisas de dns-sd -B e não encontrei nada que eu pudesse usar como modelo, e isso não aparece no Navegador Bonjour.

Qualquer sugestão seria apreciada.

    
por Gary 11.09.2012 / 22:52

1 resposta

1

A solução correta para este problema (como @Zoredache apontou) é definir o servidor para nunca dormir. Pode haver uma maneira de aumentar o tempo para acordar sob demanda, mas isso será lento, supercomplicado e potencialmente pouco confiável.

Agora, sobre o "Wake for Network Access": ele não desperta apenas para qualquer acesso de rede antigo, ele desperta quando recebe um formato especial " pacote mágico " dizendo para ele acordar. As solicitações HTTP de entrada não estão nesse formato, portanto, não farão o trabalho. (Nota: na verdade, é o pacote TCP SYN que inicia a sessão HTTP que teria que estar neste formato ... exceto que mesmo isso não funcionaria porque o seu computador não responde ao ARP enquanto dorme, então o roteador não saberia como enviar o SYN ...)

Um Bonjour Sleep Proxy oferece uma possível solução para isso (embora, como eu disse acima, seja lento, etc.). Se você tiver um dispositivo em sua rede local que forneça o serviço de proxy de suspensão, o Mac poderá registrar seus serviços anunciados pelo Bonjour com o proxy quando ele for suspenso. Enquanto está dormindo, o proxy anuncia seus serviços pelo Bonjour e responde aos ARPs em nome do seu computador. Quando um pedido (bem, o pacote SYN na verdade) chega para um dos seus serviços, o proxy envia um pacote mágico para acordar o seu computador, e então entrega a conexão de entrada para o seu computador.

Eu não testei isso, mas meu entendimento é que para que isso funcione você precisa de um dispositivo que forneça o serviço Bonjour de espera de sono (embora aparentemente alguns Macs o tenham embutido na interface ethernet), então registre um serviço na porta 80 com o Bonjour:

dns-sd -R "some arbitrary name" _http._tcp local 80 &

Observe que o "&" roda isso no fundo; o programa dns-sd deve ser deixado em execução para manter o registro ativo. Outra possibilidade seria editar o arquivo .plist launchd para que o apache crie o registro do Bonjour. Mas eu não vou me preocupar com isso porque não é a solução certa; a solução certa é não deixar o servidor dormir em primeiro lugar.

    
por 14.09.2012 / 03:33