O Apache2 falha ao iniciar na inicialização com o Ubuntu 16.04

2

Acabei de criar um novo servidor Ubuntu 16.04 (no oceano digital, se for importante). Eu configurei o Apache2 e ele é executado corretamente, mas a cada reinicialização ele falha ao inicializar.

Eu recebo o seguinte de status do systemctl :

root@twl-ubuntu-2gb-sgp1-01:~# systemctl status apache2.service 
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; static; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)

Se eu executo systemctl é habilitado eu recebo "static":

root@twl-ubuntu-2gb-sgp1-01:~# systemctl is-enabled apache2.service 
static

Mesmo depois de executar systemctl enable , isso não muda:

root@twl-ubuntu-2gb-sgp1-01:~# systemctl enable apache2.service 
Synchronizing state of apache2.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable apache2
root@twl-ubuntu-2gb-sgp1-01:~# systemctl is-enabled apache2.service 
static

Mas o apache não tem problemas para iniciar. Quando executo o systemctl start manualmente, ele funciona bem:

root@twl-ubuntu-2gb-sgp1-01:~# systemctl start apache2.service 
root@twl-ubuntu-2gb-sgp1-01:~# systemctl status apache2.service 
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; static; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Sat 2016-07-09 07:33:30 EDT; 8s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1847 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 7
   Memory: 22.5M
      CPU: 455ms
   CGroup: /system.slice/apache2.service
           ├─1871 /usr/sbin/apache2 -k start
           ├─1875 /usr/sbin/apache2 -k start
           ├─1876 /usr/sbin/apache2 -k start
           ├─1877 /usr/sbin/apache2 -k start
           ├─1878 /usr/sbin/apache2 -k start
           └─1879 /usr/sbin/apache2 -k start

Jul 09 07:33:28 twl-ubuntu-2gb-sgp1-01 systemd[1]: Starting LSB: Apache2 web server...
Jul 09 07:33:28 twl-ubuntu-2gb-sgp1-01 apache2[1847]:  * Starting Apache httpd web server apache2
Jul 09 07:33:29 twl-ubuntu-2gb-sgp1-01 apache2[1847]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set t
Jul 09 07:33:30 twl-ubuntu-2gb-sgp1-01 apache2[1847]:  *
Jul 09 07:33:30 twl-ubuntu-2gb-sgp1-01 systemd[1]: Started LSB: Apache2 web server.

Sou novo no systemd, atualizado apenas recentemente para 16.04 a partir de 14.04. Onde estou indo errado, ou talvez, o que posso fazer para depurar porque o apache2 está se recusando a iniciar?

Atualização 1 (2016-07-14)

Acontece que o Apache está sendo carregado, mas está recebendo um SIGTERM assim que é iniciado. A única linha no arquivo de log é:

[Wed Jul 13 21:37:15.730331 2016] [mpm_prefork:notice] [pid 1871] AH00169: caught SIGTERM, shutting down

Alguma ideia de como obter uma mensagem de erro melhor? Como eu mencionei executando systemctl start apache2 imediatamente após a inicialização começa tudo bem.

Atualização 2 (2016-07-15)

Acontece que o Sigterm estava sendo morto quando eu corri sudo reboot . Não houve mensagens de log em /var/log/apache2/error.log . Se eu executar journalctl , obtenho essas linhas durante o processo de inicialização, portanto, parece funcionar corretamente ou, pelo menos, nenhum erro é registrado:

Jul 13 21:38:04 twl-ubuntu-2gb-sgp1-01 systemd[1]: Starting LSB: Apache2 web server...
Jul 13 21:38:04 twl-ubuntu-2gb-sgp1-01 apache2[1800]:  * Starting Apache httpd web server apache2
Jul 13 21:38:04 twl-ubuntu-2gb-sgp1-01 apache2[1800]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set t
Jul 13 21:38:05 twl-ubuntu-2gb-sgp1-01 apache2[1800]:  *
Jul 13 21:38:05 twl-ubuntu-2gb-sgp1-01 systemd[1]: Started LSB: Apache2 web server.

Mas o serviço nunca está acessível e systemctl status apache2.service ainda o relata como "inativo (morto)"

    
por Jason O'Neil 09.07.2016 / 13:35

2 respostas

2

Eu procurei o que significa o estado static de is-enabled e descobriu que:

  

Neste contexto, estático significa que o arquivo unitário não contém uma seção "install", que é usada para habilitar uma unidade. Assim, essas unidades não podem ser ativadas.

Além disso, descobri que o pacote Apache2 contém apenas um arquivo systemd include, não um arquivo completo:

 # /lib/systemd/system/apache2.service.d/apache2-systemd.conf
 [Service]
 Type=forking
 RemainAfterExit=no

Parece que o restante da lógica para gerenciar o processo Apache2 vem do uso de um shim que permite que systemd execute scripts SysVinit. Portanto, tente ativar o Apache2 para ser executado na inicialização usando um link simbólico em um diretório SysVinit:

ln -s /etc/init.d/apache2 /etc/rc5.d/S02apache2

Parece um bug ou, pelo menos, um recurso ausente que o Apache2 não está enviando com um arquivo 'service' completo no Ubuntu 16.04.

    
por Mark Stosberg 09.07.2016 / 17:09
0

Por favor, tente:

ln -s /etc/systemd/system/apache2.service /etc/systemd/system/multi-user.target.wants/apache2.service
    
por ivanllc 19.06.2017 / 18:04