o apache2 falha ao executar o serviço, mas não quando é executado diretamente

1

Eu tenho o apache rodando muito bem na inicialização e usando manualmente /etc/init.d/apache2 start e estou bem com isso, mas um dos gerentes de servidor está acostumado a usar o comando service e, por algum motivo, o apache não é executado corretamente serviço.

Se eu executar diretamente, recebo:

Start
...[OK]

Stop
...[OK]

Help
Usage: /etc/apache2/bin/httpd [-D name] [-d directory] [-f file]
...

mas quando tento executá-lo através do comando service, recebo:

Start
start: Job failed to start

Stop
stop: Unknown instance:

Help
Usage: /etc/apache2/bin/httpd [-D name] [-d directory] [-f file]
...

Eu pensava anteriormente que eles estavam apontando para diferentes executáveis , mas baseados na saída de uso da ajuda, ambos estão apontando para /etc/apache2/bin/apachectl , que por sua vez aponta para /etc/apache2/bin/httpd . Também this indica para mim que o serviço não pode encontrar o executando o processo httpd (talvez porque é chamado httpd em vez de apache2).

Por que esses dois métodos que estão invocando o mesmo exe (na verdade, é um script, mas isso não importa) têm resultados diferentes?

    
por TheBat 21.10.2014 / 16:10

1 resposta

1

Depois de algumas pesquisas e de brincar com arquivos, descobri o problema.

O problema para mim foi com a compatibilidade retroativa do Upstart com o sysvinit, causando um conflito transparente entre dois arquivos. O Upstart suporta scripts no diretório /etc/init.d com suporte de compatibilidade com versões anteriores para o sysvinit, já que esse é o diretório antigo usado pelo sysvinit para scripts. No entanto, o Upstart usa /etc/init/ para seus scripts. O uso pretendido é ter um script em um ou outro diretório. Meu problema foi ter os dois (ainda não sei como o script /etc/init/ chegou lá). Como o script em /etc/init não era um script funcional (estava apontando para o apache exe errado), ele falhou na inicialização, o que foi bom, já que o do init.d estava em execução. Mas uma vez que eu tentei executá-lo através do serviço, o erro se tornou visível.

Eu deletei /etc/init/apache2.conf e agora faço o serviço do apache2 corretamente no script do init.d, como eu quero.

    
por 21.10.2014 / 19:58