Servidor Apache não inicia automaticamente

11

Instalei o Apache por muito tempo como parte da configuração do ambiente de desenvolvimento no meu laptop.

No entanto, desde que eu o interrompi há alguns meses, ele não é mais iniciado automaticamente na inicialização. Eu tenho esse problema no meu laptop em casa E no meu laptop no trabalho.

Nos dois casos, instalei o Apache no Ubuntu 10.10 há alguns meses, usei-o por várias semanas sem falhas, mas um dia parei e agora ele não é mais iniciado automaticamente. Tentei executar a atualização rc manualmente, mas foi informado que o script init já está em uso.

No entanto, iniciando / reiniciando manualmente com

sudo service apache2 start/restart

funciona bem. Nos dois casos, deixei para depois da atualização para o 11.04, porque esperava que fosse resolvido pela nova versão. Mas isso não! Ficaria muito grato se alguém puder me dizer como fazer o Apache iniciar automaticamente mais uma vez.

Carsten Agger
fonte

Respostas:

10

Tente correr

update-rc.d apache2 enable [list of run levels]

como raiz.

Você pode ler

man update-rc.d
ignorar
fonte
1
Muito obrigado, executei o comando (sem lista de níveis de execução, apenas os padrões), e parece funcionar. Você sabe por que parecia parar de funcionar? Eu não brinquei com os scripts init, acho que acabei de parar o Apache na linha de comando - mas não tinha intenção de interrompê-lo permanentemente . :-)
Carsten Agger
Não tenho nenhuma opinião sobre por que ele parou de funcionar :) Talvez após a atualização algo comece a funcionar incorretamente.
Ignorar
Obrigado, mas não ajuda. Não importa como chamo de update-rc.d apache2 enable, o apache para de executar automaticamente automaticamente. Eu sempre tenho que iniciá-lo manualmente. Parece não haver problemas reais, pois sempre é iniciado corretamente quando eu o faço manualmente.
Carsten Agger
9

Estou adicionando esta resposta com base em problemas recentes que encontrei com os mesmos sintomas.

Primeiro, alguns dados de segundo plano:

  • O Ubuntu usa scripts na /etc/init.d/pasta para iniciar / parar serviços.
  • O Ubuntu usa links simbólicos para esses /etc/init.d/scripts, armazenados nas /etc/rc#.d/pastas, para iniciar / parar serviços com base no "nível de execução".
  • Os links simbólicos iniciados com um "S" indicam que o serviço deve ser iniciado.
  • Os links simbólicos iniciados com um "K" indicam que o serviço deve ser interrompido (eliminado).
  • O nível de execução 1 executa os scripts com links simbólicos /etc/rc1.d/, o nível de execução 2 usa /etc/rc2.d/e assim por diante.
  • O nível de execução padrão para o Ubuntu é 2.
  • A instalação do Apache é essencialmente executada, o sudo update-rc.d apache2 defaultsque cria os links simbólicos apropriados nas /etc/rc#.d/pastas.

Parece que, no meu servidor, algo ou alguém correu em algum momento sudo update-rc.d apache2 disableque removeu todos os links simbólicos "S" e os substituiu por links simbólicos "K". Assim, apache, ou simplesmente não iniciando, o Apache ao inicializar qualquer um dos níveis de execução.

Minha solução foi apenas reativar o Apache:

sudo update-rc.d apache2 enable

Agora o Apache inicia / para conforme o esperado ao iniciar ou alternar os níveis de execução.

NB:

Vale a pena notar que apenas correr sudo update-rc.d apache2 defaultsnovamente é insuficiente porque ele vê que existem links simbólicos e considera que eles são o que se deseja. Apenas responde com:

System start/stop links for /etc/init.d/apache2 already exist.
Karl Wilbur
fonte
1
Obrigado! Isso foi muito valioso na solução de problemas da minha configuração.
reor
1
Estou tendo esse problema, mas essa solução surpreendentemente não funcionou. Quando corro, sudo update-rc.d apache2 enable defaultsele remove o que tenho e o coloca de volta. Eu tenho K09apache2em rc0, 1 e 6 e tenho S91apache2em rc2, rc3, rc4, rc5. service apache2 startfunciona bem, mas eu tenho que fazê-lo após cada reinicialização, pois não será iniciado automaticamente. Por outro lado, o mysql sempre inicia bem.
Buttle Butkus
1
Aqueles parecem certos. Você pode abrir uma nova pergunta com os detalhes do seu problema específico e incluir linhas relevantes do seu /var/log/sysloge /var/log/apache2/error.log. Envie-me uma mensagem com o link da pergunta e verei se posso ajudar.
Karl Wilbur
3

Nesse caso, descobri por que o Apache não iniciava. Não foi possível encontrar um rastro disso nos logs de inicialização, apenas na saída impressa na tela na inicialização.

Mas aqui está: a última linha do script /etc/apache2/apache2.conffalhou.

Por quê?

Diz:

Include sites-enabled/

No entanto, dois dos sites que eu configurei estão localizados no meu próprio diretório pessoal - que é criptografado!

Portanto, na inicialização (durante a inicialização do Apache), esses sites não existem e o Apache falha e se recusa a executar.

Solução?

Eu criei um pequeno script chamado "disable_sites" e simbolicamente o em /etc/rc0.de /etc/rc6.d(encerramento e reinicialização):

#!/bin/bash

/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/apache2 reload

exit 0

Também criei um script para reativar os sites sempre que efetuar login e o adicionei como um programa de inicialização nas Configurações do sistema. Então agora funciona!

Portanto, suponho que a lição aqui é que, quando o Apache falha inexplicavelmente durante o carregamento e você não encontra erros nos logs ou ao iniciar o servidor manualmente, verifique se todos os diretórios necessários estão disponíveis. Provavelmente isso também poderia ser resolvido de alguma outra maneira.

Carsten Agger
fonte
Estou surpreso que você não encontrou nenhum erro nos logs. No passado, descobri que alguns erros de inicialização do Apache não estavam no arquivo de log que eu esperava, mas em um arquivo de log para um dos meus hosts virtuais. Poderia ser este o caso?
Marius Gedminas
apachectl configtestteria notificado você sobre a falta de permissões para acessar os arquivos enquanto estiver executando como daemon.
Anuga
1

Para outras pessoas que procuram (pesquisando no Google) esse problema, verifique se, se você executar:

chkconfig |grep httpd

você recebe

httpd 0: desligado 1: desligado 2: ligado 3: ligado 4: ligado 5: ligado 6: desligado

mais faça:

chkconfig httpd on

(desculpe no ubuntu o chkconfig equivalente é update-rc.d, veja a alternativa Chkconfig para o Ubuntu Server? )

dfliess
fonte
0

Eu tive o mesmo problema e estou executando o Ubuntu 14 em uma instalação local do Vagrant. Eu removi o /etc/apache2/sites-enableddiretório e adicionei um link ao meu diretório pessoal, que obviamente está montado na minha unidade local de acordo com as configurações do Vagrant.

Acontece que o apache não estava vendo o diretório porque o recurso ainda não estava montado. Reescrevi minha provisão no Vagrant para copiar o sites-enableddiretório em vez de adicionar um link simbólico.

Também fiz sudo update-rc.d apache2 enablecomo sugerido Karl Wilburpara ter certeza de que o apache init estava ativado.

user288900
fonte