O servidor Apache não é iniciado automaticamente

11

Eu instalei o Apache há muito tempo como parte da configuração do ambiente de desenvolvimento no meu laptop.

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

Eu ambos casos, eu instalei o Apache no Ubuntu 10.10 alguns meses atrás, usei por várias semanas sem uma falha, mas um dia eu parei e agora não é mais iniciado automaticamente. Eu tentei executar o update rc manualmente, mas foi dito que o script de inicialização já está em uso.

No entanto, iniciar / reiniciar manualmente com

sudo service apache2 start/restart

funciona bem. Em ambos os casos, deixo para depois da atualização para o 11.04, porque esperava que fosse resolvido pela nova versão. Mas isso não! Eu ficaria grato se alguém puder me dizer como fazer com que o Apache inicie automaticamente mais uma vez.

    
por Carsten Agger 12.05.2011 / 10:02

5 respostas

3

Nesse caso, descobri por que o Apache não iniciava. Eu não consegui encontrar um traço disso nos logs de inicialização, apenas na saída impressa na tela durante a inicialização.

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

Por quê?

Diz:

Include sites-enabled/

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

Portanto, durante a 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 criei um link simbólico para /etc/rc0.d e /etc/rc6.d (shutdown and reboot):

#!/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 eu fiz login e o adicionei como um programa de inicialização nas configurações do meu sistema. Então agora funciona!

Portanto, suponho que a lição aqui é que, quando o Apache inexplicavelmente falha ao carregar durante a inicialização e você não consegue encontrar nenhum erro nos logs ou ao iniciar o servidor manualmente, verifique se todos os diretórios necessários estão disponíveis. Isso provavelmente também poderia ser resolvido de alguma outra forma.

    
por Carsten Agger 14.07.2011 / 10:48
10

Tente executar

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

como root.

Você pode se interessar em ler

man update-rc.d
    
por ignar 12.05.2011 / 11:23
6

Estou adicionando essa resposta com base nos problemas recentes que encontrei com os mesmos sintomas.

Primeiro, alguns dados de histórico:

  • O Ubuntu usa scripts na pasta /etc/init.d/ para iniciar / parar serviços.
  • O Ubuntu usa links simbólicos para esses /etc/init.d/ scripts, armazenados nas pastas /etc/rc#.d/ , para iniciar / parar serviços baseados no "runlevel".
  • Os links simbólicos que começam com um "S" indicam que o serviço deve ser iniciado.
  • Os
  • links simbólicos que começam com um "K" indicam que o serviço deve ser interrompido (morto).
  • O nível de execução 1 executa os scripts ligados simbolicamente em /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 executa sudo update-rc.d apache2 defaults , o que cria os links simbólicos apropriados nas pastas /etc/rc#.d/ .

Então parece que no meu servidor algo, ou alguém, em algum momento correu sudo update-rc.d apache2 disable , que removeu todos os links simbólicos "S" e os substituiu por links simbólicos "K". Assim matando, ou simplesmente não iniciando, o Apache ao inicializar qualquer um dos runlevels.

Minha solução foi apenas reativar o Apache:

sudo update-rc.d apache2 enable

Agora o Apache é iniciado / interrompido como esperado ao iniciar ou comutar os níveis de execução.

NB:

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

System start/stop links for /etc/init.d/apache2 already exist.
    
por Karl Wilbur 21.03.2016 / 13:04
1

Para outras pessoas que estão pesquisando (googling), verifique se, se você executar:

chkconfig |grep httpd

você recebe

  

link

else faça:

chkconfig httpd on

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

    
por dfliess 09.04.2014 / 00:09
0

Eu tive o mesmo problema e estou executando o Ubuntu 14 em uma configuração local do Vagrant. Eu removi o diretório /etc/apache2/sites-enabled e adicionei um link ao meu diretório inicial, que é claro, é 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. Eu reescrevi minha provisão no Vagrant para apenas copiar o diretório sites-enabled ao invés de adicionar um link simbólico.

Eu também fiz sudo update-rc.d apache2 enable como sugerido por Karl Wilbur para ter certeza de que o apache init estava habilitado.

    
por user288900 23.02.2017 / 17:45