Confuso sobre DFOREGROUND com Apache

15

Acabei de instalar o Apache em um novo servidor CentOS 7, usando o Yum. Instalei o Apache muitas vezes antes, mas nunca vi isso: Quando executo o ps aux agora, ele sempre mostra

/ usr / sbin / httpd -DFOREGROUND

O Google me diz que isso significa que o processo será executado em primeiro plano e não será desconectado do shell, mas eu realmente não entendo o que isso significa - se eu fechar o shell, o Apache morrerá?

Eu só quero obter o comportamento normal do Apache e ter o httpd executado como sempre, acompanhando em segundo plano, preciso desabilitar o DFOREGROUND? (Eu não consigo descobrir como btw)

Cocorico
fonte
E como você começou o Apache?
Michael Hampton
Isso acontece se eu fizer 'service apache start' ou quando o servidor for iniciado e carregar o script init.d / httpd.
Cocorico
O script "init.d / httpd"? Você não deve ter esse script.
Michael Hampton
Michael: Copiei um do meu servidor antigo porque não consegui descobrir outra maneira de fazê-lo iniciar na inicialização. O que devo fazer em seu lugar?
Cocorico
systemctl enable httpd. Veja a documentação
Michael Hampton

Respostas:

20

A -DFOREGROUNDopção realmente significa que o Apache não será bifurcado, mas isso não significa que ele esteja anexado ao seu shell!

O serviço é iniciado pelo systemd quando você executa systemctl start httpd(ou da maneira antiga service httpd start). É o systemd ao qual o Apache está conectado e o systemd está gerenciando o processo como um de seus filhos. Isso é feito para que o systemd possa saber facilmente se o Apache travou, sem precisar pesquisar um arquivo pid ou fazer outras invasões desagradáveis. Isso também significa que o systemd é capaz de reiniciar o Apache automaticamente se ele falhar.

Corra systemctl status httpdpara ver seu status. Um exemplo se parece com:

# systemctl status httpd
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: active (running) since Sat 2014-07-12 01:53:50 UTC; 1 weeks 3 days ago
  Process: 21400 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
 Main PID: 390 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─  390 /usr/sbin/httpd -DFOREGROUND
           ├─15379 /usr/sbin/httpd -DFOREGROUND
           ├─15858 /usr/sbin/httpd -DFOREGROUND
           ├─16809 /usr/sbin/httpd -DFOREGROUND
           ├─16944 /usr/sbin/httpd -DFOREGROUND
           ├─17079 /usr/sbin/httpd -DFOREGROUND
           ├─17351 /usr/sbin/httpd -DFOREGROUND
           ├─17487 /usr/sbin/httpd -DFOREGROUND
           ├─17772 /usr/sbin/httpd -DFOREGROUND
           ├─17908 /usr/sbin/httpd -DFOREGROUND
           └─18043 /usr/sbin/httpd -DFOREGROUND

Jul 12 01:53:50 hozen httpd[390]: AH02559: The SSLCertificateChai...d
Jul 12 01:53:50 hozen httpd[390]: AH00558: httpd: Could not relia...e
Jul 12 01:53:50 hozen systemd[1]: Started The Apache HTTP Server.
Jul 13 03:30:02 hozen systemd[1]: Reloading The Apache HTTP Server.
Jul 13 03:30:02 hozen httpd[9332]: AH02559: The SSLCertificateCha...d
Jul 13 03:30:02 hozen systemd[1]: Reloaded The Apache HTTP Server.
Jul 21 03:19:02 hozen systemd[1]: Reloading The Apache HTTP Server.
Jul 21 03:19:02 hozen httpd[21400]: AH02559: The SSLCertificateCh...d
Jul 21 03:19:02 hozen systemd[1]: Reloaded The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
Michael Hampton
fonte
2
Obrigado, isso faz muito sentido. Então, só para ter certeza de que eu entendo, é bom rodar com o DFOREGROUND e é realmente bom, não é ruim, certo?
Cocorico
3
Sim está bom.
Michael Hampton
1
@MichaelHampton Existe uma maneira de ver o que exatamente um desses processos está executando?
Carla