CentOs 7: http não será iniciado na inicialização se ele ouvir um endereço IP específico

3

Eu tenho isso no meu httpd.conf:

Listen 216.XX.YY.ZZZZ:80

Só para ter certeza, verifiquei se o httpd está ativado na inicialização:

systemctl httpd enable

Quando o sistema inicializa , eu tenho:

systemctl status httpd

● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2017-02-23 22:21:03 PST; 8min ago
  Process: 719 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 719 (code=exited, status=1/FAILURE)

Feb 23 22:21:00 centosXXXXXX.aspadmin.net systemd[1]: Starting The Apache HTTP Server...
Feb 23 22:21:03 centosXXXXXX.aspadmin.net httpd[719]: (99)Cannot assign requested address: AH00072: make_sock: could not bind to address 216.XX.YY.XXX:80
Feb 23 22:21:03 centosXXXXXX.aspadmin.net httpd[719]: no listening sockets available, shutting down
Feb 23 22:21:03 centosXXXXXX.aspadmin.net httpd[719]: AH00015: Unable to open logs
Feb 23 22:21:03 centosXXXXXX.aspadmin.net systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Feb 23 22:21:03 centosXXXXXX.aspadmin.net systemd[1]: Failed to start The Apache HTTP Server.
Feb 23 22:21:03 centosXXXXXX.aspadmin.net systemd[1]: Unit httpd.service entered failed state.
Feb 23 22:21:03 centosXXXXXX.aspadmin.net systemd[1]: httpd.service failed.

Eu posso iniciá-lo executando:

systemctl start httpd

E tudo funciona:

systemctl status httpd


● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2017-02-23 22:31:53 PST; 3s ago
 Main PID: 2804 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
       ├─2804 /usr/sbin/httpd -DFOREGROUND
       ├─2805 /usr/sbin/httpd -DFOREGROUND
       ├─2806 /usr/sbin/httpd -DFOREGROUND
       ├─2808 /usr/sbin/httpd -DFOREGROUND
       ├─2824 /usr/sbin/httpd -DFOREGROUND
       └─2831 /usr/sbin/httpd -DFOREGROUND

Feb 23 22:31:53 centosXXXXXX.aspadmin.net systemd[1]: Starting The Apache HTTP Server...
Feb 23 22:31:53 centosXXXXXX.aspadmin.net httpd[2804]: AH00558: httpd:     Feb 23 22:31:53 centosXXXXXX.aspadmin.net systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

O IP é atribuído a eth0 usando um script de rede normal em /etc/sysconfig/network-scripts/ifcfg-eth0 .

Verificando /lib/systemd/system/httpd.service eu tenho:

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target

O único problema semelhante na rede está aqui: link No entanto, o conselho deles:

systemctl enable NetworkManager-wait-online.service
Failed to execute operation: No such file or directory

Parece não funcionar.

Estou totalmente perdido.

    
por Merc 24.02.2017 / 07:39

1 resposta

1

Acontece que você precisa usar o NetworkManager para que isso funcione, já que você quer esperar que os IPs estejam realmente disponíveis. O NetworkManager não é instalado por padrão no CentOS 7.

Então:

# yum install NetworkManager

Ativar:

systemctl enable NetworkManager-wait-online

Então:

# systemctl edit httpd.service

E adicione:

After=network.target NetworkManager-wait-online.service remote-fs.target nss-lookup.target

Neste ponto, o HTTPD só será iniciado quando o IP for atribuído à interface e ao bingo, ele será realmente iniciado.

    
por 25.02.2017 / 04:34