Mylić o DFOREGROUND z Apache

16

Właśnie zainstalowałem Apache na nowym serwerze CentOS 7, używając Yum. Apache instalowałem już wiele razy, ale nigdy tego nie widziałem: kiedy teraz uruchamiam ps aux , to zawsze pokazuje

/ usr / sbin / httpd -DFOREGROUND

Google mówi mi, że oznacza to, że proces będzie działał na pierwszym planie i nie odłączy się od powłoki, ale tak naprawdę nie rozumiem, co to oznacza - jeśli zamknę moją powłokę, czy Apache umrze?

Chcę po prostu uzyskać normalne zachowanie Apache i mieć httpd działający tak, jak zawsze, i szperający w tle, czy muszę wyłączyć DFOREGROUND? (Nie mogę wymyślić, jak btw)

Cocorico
źródło
Jak zacząłeś Apache?
Michael Hampton
Zdarza się to, jeśli wykonam „service apache start” lub gdy serwer się uruchomi i załaduje skrypt init.d / httpd.
Cocorico,
Jaki skrypt „init.d / httpd”? Nie powinieneś mieć takiego skryptu.
Michael Hampton
Michael: Skopiowałem jeden z mojego starego serwera, ponieważ nie mogłem wymyślić innego sposobu, aby uruchomić go przy starcie. Co powinienem zamiast tego robić?
Cocorico
systemctl enable httpd. Zobacz dokumentację
Michael Hampton

Odpowiedzi:

20

Ta -DFOREGROUNDopcja rzeczywiście oznacza, że ​​Apache nie rozwidli się, ale to nie znaczy, że jest dołączony do twojej powłoki!

Usługa jest uruchamiana przez systemd po uruchomieniu systemctl start httpd(lub w starym stylu service httpd start). Jest systemd, do którego dołączony jest Apache, i systemd zarządza procesem jako jedno z jego dzieci. Robi się to, aby systemd mógł łatwo stwierdzić, czy Apache się zawiesił, bez konieczności sondowania pliku pid lub wykonywania innych nieprzyjemnych działań hakerskich. Oznacza to również, że systemd może automatycznie zrestartować Apache, jeśli ulegnie awarii.

Uruchom, systemctl status httpdaby zobaczyć jego status. Przykład wygląda następująco:

# 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
źródło
2
Dzięki, to ma sens. Tak więc, aby się upewnić, że rozumiem, dobrze jest uruchomić DFOREGROUND i jest to naprawdę dobre, a nie złe, prawda?
Cocorico
3
Tak w porządku.
Michael Hampton
1
@MichaelHampton Czy istnieje sposób, aby zobaczyć, co dokładnie działa jeden z tych procesów?
carla