Diferentes maneiras de reiniciar o Apache?

11

Eu tenho uma pergunta sobre o Apache aqui.

Durante toda a minha carreira como desenvolvedor, reiniciei o Apache assim:

sudo /etc/init.d/apache2 restart

Hoje eu implantei meu primeiro aplicativo Rails, mas estava tendo problemas para reiniciar o Apache na máquina host. Quando eu tentava dessa maneira, o Apache tentava reiniciar, mas acabava travando.

Isso, no entanto, funcionou bem:

sudo apachectl restart

Quais são as diferenças entre essas duas técnicas? Eu tinha assumido que o último era, na melhor das hipóteses, "açúcar sintático" para o primeiro, mas esse não deve ser o caso, dado que o último funcionava enquanto o primeiro não.

Se for relevante (e suspeito que possa ser), este aplicativo Rails usa o Phusion Passenger. Minha experiência anterior em desenvolvimento (segundo a qual o método anterior funciona bem) é principalmente com PHP. Eu sou muito novo no Rails.

O servidor em questão está executando o Ubuntu 11.04 (Natty).

Chris Allen Lane
fonte
1
Outra alternativa é apache2 serviço de reinício, embora eu não sei como que difere do anterior 2 se em tudo
Phil

Respostas:

6
sudo /etc/init.d/apache2 restart

Este método usa os scripts de inicialização da sua distribuição Linux para reiniciar o processo. Esses scripts são executados no momento da inicialização para iniciar o apache.

sudo apachectl restart

Este método usa o programa de controle apachectl . Em quase todas as ocasiões, eu recomendaria o uso de apachectl the para manipular o daemon apache. Você tem um controle mais refinado sobre como o processo é reiniciado (consulte normalmente vs. reinicialização), opções de validação de configuração e uma maneira de obter informações de status.

A principal diferença entre o uso dos scripts init para reiniciar o apache e o apachectl é que o apachectl foi projetado especificamente para permitir que os administradores controlem o apache, enquanto os scripts init são projetados como uma maneira generalizada para o Unixes iniciar processos após o carregamento do kernel e do init daeamon.

EDIT: Infelizmente, não tenho idéia de como resolver seu problema com o Rails ou o Phusion Passenger. Tente procurar nos seus logs do Apache por pistas.


fonte
2
Exatamente o que você acha que seu sistema operacional fará quando reiniciar e o serviço apache2 start não funcionar? Usar o apachectl é bom para testes e trabalhos de desenvolvimento, mas a execução de servidores causará problemas. Colocá-lo no rc.local também não é uma solução.
27411 kashani
Eu deveria mencionar que estou apenas respondendo metade da pergunta: a diferença entre os dois métodos para reiniciar o apache. Infelizmente eu não sei tudo sobre o Rails ... meio que li sobre velocidade na minha primeira volta.
Obrigado pela ajuda. Isso esclareceu as diferenças entre os dois para mim. Com relação ao material do Rails, eu já havia resolvido isso antes de postar aqui. O apachectl realmente funcionou como um campeão, enquanto o método init.d não. Então agora eu sei! Obrigado.
Chris Allen Lane