Confondre DFOREGROUND avec Apache

16

Je viens donc d'installer Apache sur un nouveau serveur CentOS 7, en utilisant Yum. J'ai installé Apache plusieurs fois auparavant, mais je n'ai jamais vu cela: quand je lance ps aux maintenant, cela montre toujours

/ usr / sbin / httpd -DFOREGROUND

Google me dit que cela signifie que le processus se déroulera au premier plan et ne se détachera pas du shell, mais je ne comprends pas vraiment ce que cela signifie - si je ferme mon shell, Apache mourra-t-il?

Je veux juste obtenir le comportement normal d'Apache, et faire fonctionner httpd comme d'habitude, en me déplaçant en arrière-plan, dois-je désactiver DFOREGROUND? (Je ne sais pas comment btw)

Cocorico
la source
Et comment avez-vous commencé Apache?
Michael Hampton
Cela se produit si je fais «service apache start» ou lorsque le serveur démarre et qu'il charge le script init.d / httpd.
Cocorico
Quel script "init.d / httpd"? Vous ne devriez pas avoir un tel script.
Michael Hampton
Michael: J'en ai copié un depuis mon ancien serveur car je ne pouvais pas trouver une autre façon de le faire démarrer au démarrage. Que dois-je faire à la place?
Cocorico du
systemctl enable httpd. Voir la documentation
Michael Hampton

Réponses:

20

L' -DFOREGROUNDoption signifie en effet qu'Apache ne va pas bifurquer, mais cela ne signifie pas qu'il est attaché à votre shell!

Le service est démarré par systemd lorsque vous exécutez systemctl start httpd(ou l'ancienne méthode service httpd start). C'est systemd auquel Apache est attaché, et systemd gère le processus comme l'un de ses enfants. Ceci est fait pour que systemd puisse facilement dire si Apache s'est planté, sans avoir à interroger un fichier pid ou faire d'autres hackery méchants. Cela signifie également que systemd est capable de redémarrer automatiquement Apache en cas de panne.

Exécutez systemctl status httpdpour voir son statut. Un exemple ressemble à:

# 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
la source
2
Merci, cela a beaucoup de sens. Donc, juste pour être sûr de bien comprendre, c'est bien de courir avec DFOREGROUND et c'est en fait bon, pas mal, non?
Cocorico
3
Oui ça ira.
Michael Hampton
1
@MichaelHampton Existe-t-il un moyen de voir exactement ce que l'un de ces processus est en cours d'exécution?
carla