Confundido sobre DFOREGROUND con Apache

16

Así que acabo de instalar Apache en un nuevo servidor CentOS 7, usando Yum. He instalado Apache muchas veces antes, pero nunca he visto esto: Cuando corro ps aux ahora, siempre espectáculos

/ usr / sbin / httpd -DFOREGROUND

Google me dice que eso significa que el proceso se ejecutará en primer plano y no se separará del shell, pero realmente no entiendo lo que eso significa: si cierro el shell, ¿Apache morirá?

Solo quiero obtener el comportamiento normal de Apache y ejecutar httpd como siempre lo hacía, avanzando en segundo plano, ¿necesito deshabilitar DFOREGROUND? (No puedo entender cómo, por cierto)

Cocorico
fuente
¿Y cómo empezaste Apache?
Michael Hampton
Sucede si hago 'service apache start' o cuando se inicia el servidor y carga el script init.d / httpd.
Cocorico
¿Qué script "init.d / httpd"? No deberías tener ningún script de este tipo.
Michael Hampton
Michael: Copié uno de mi antiguo servidor porque no pude encontrar otra forma de que comience en el inicio. ¿Qué debería hacer en su lugar?
Cocorico
systemctl enable httpd. Ver la documentación
Michael Hampton

Respuestas:

20

La -DFOREGROUNDopción realmente significa que Apache no se bifurcará, ¡pero eso no significa que esté conectado a su shell!

Systemd inicia el servicio cuando lo ejecuta systemctl start httpd(o al estilo antiguo service httpd start). Es systemd al que está conectado Apache, y systemd está administrando el proceso como uno de sus hijos. Esto se hace para que systemd pueda determinar fácilmente si Apache se ha bloqueado, sin tener que sondear un archivo pid o realizar otro hacker desagradable. Esto también significa que systemd es capaz de reiniciar automáticamente Apache si se bloquea.

Corre systemctl status httpdpara ver su estado. Un ejemplo se ve así:

# 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
fuente
2
Gracias, eso tiene mucho sentido. Sin embargo, solo para estar seguro de que entiendo, está bien correr con DFOREGROUND y en realidad es bueno, no está mal, ¿verdad?
Cocorico
3
Si esta bien.
Michael Hampton
1
@MichaelHampton ¿Hay alguna forma de ver qué se está ejecutando exactamente en uno de estos procesos?
carla