Confuso su DFOREGROUND con Apache


16

Quindi ho appena installato Apache su un nuovo server CentOS 7, usando Yum. Ho installato Apache molte volte prima, ma non l'ho mai visto: quando eseguo ps aux ora, mostra sempre

/ usr / sbin / httpd -DFOREGROUND

Google mi dice che significa che il processo verrà eseguito in primo piano e non si staccherà dalla shell, ma non capisco cosa significhi - se chiudo la shell, Apache morirà?

Voglio solo ottenere il normale comportamento di Apache e far funzionare httpd come sempre, aggirandosi in background, devo disabilitare DFOREGROUND? (Non riesco a capire come btw)


E come hai avviato Apache?
Michael Hampton

Succede se faccio 'service apache start' o quando il server si avvia e carica lo script init.d / httpd.
Cocorico,

Quale script "init.d / httpd"? Non dovresti avere uno script del genere.
Michael Hampton

Michael: Ne ho copiato uno dal mio vecchio server perché non riuscivo a trovare un altro modo per avviarlo all'avvio. Cosa dovrei fare invece?
Cocorico,

systemctl enable httpd. Vedi la documentazione
Michael Hampton

Risposte:


20

L' -DFOREGROUNDopzione significa davvero che Apache non si biforcherà, ma ciò non significa che sia collegato alla shell!

Il servizio viene avviato da systemd quando si esegue systemctl start httpd(o alla vecchia maniera service httpd start). È systemd a cui è collegato Apache e systemd sta gestendo il processo come uno dei suoi figli. Questo viene fatto in modo che systemd possa facilmente dire se Apache si è arrestato in modo anomalo, senza dover eseguire il polling di un file pid o fare altro brutto hacker. Ciò significa anche che systemd è in grado di riavviare automaticamente Apache in caso di arresto anomalo.

Corri systemctl status httpdper vedere il suo stato. Un esempio è simile a:

# 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.

2
Grazie, ha molto senso. Quindi, per essere sicuro di aver capito, va bene quindi eseguire con DFOREGROUND ed è effettivamente buono, non cattivo, giusto?
Cocorico,

3
Sì, va bene.
Michael Hampton

1
@MichaelHampton C'è un modo per vedere esattamente quale di questi processi è in esecuzione?
carla,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.