Verwirrt über DFOREGROUND mit Apache

15

Also habe ich Apache mit Yum auf einem neuen CentOS 7-Server installiert. Ich habe Apache schon oft installiert, habe es aber noch nie gesehen: Wenn ich jetzt ps aux starte, wird es immer angezeigt

/ usr / sbin / httpd -DFOREGROUND

Google teilt mir mit, dass der Prozess im Vordergrund ausgeführt wird und sich nicht von der Shell löst, aber ich verstehe nicht wirklich, was das bedeutet. Wenn ich meine Shell schließe, stirbt Apache?

Ich möchte nur das normale Apache-Verhalten erhalten und habe httpd wie immer ausgeführt und tuckere im Hintergrund mit. Muss ich DFOREGROUND deaktivieren? (Ich kann nicht herausfinden, wie man übrigens)

Cocorico
quelle
Und wie hast du Apache gestartet?
Michael Hampton
Es passiert, wenn ich 'service apache start' mache oder wenn der Server startet und das init.d / httpd-Skript geladen wird.
Cocorico
Welches "init.d / httpd" -Skript? Sie sollten kein solches Skript haben.
Michael Hampton
Michael: Ich habe einen von meinem alten Server kopiert, weil ich keinen anderen Weg finden konnte, um ihn beim Start zu starten. Was soll ich stattdessen tun?
Cocorico
systemctl enable httpd. Siehe die Dokumentation
Michael Hampton

Antworten:

20

Die -DFOREGROUNDOption bedeutet in der Tat, dass Apache nicht verzweigt, aber das bedeutet nicht, dass es an Ihre Shell angehängt ist!

Der Dienst wird von systemd gestartet, wenn Sie ihn ausführen systemctl start httpd(oder nach alter Art service httpd start). Es ist systemd, an das Apache angehängt ist, und systemd verwaltet den Prozess als eines seiner untergeordneten Elemente. Dies geschieht, damit systemd leicht feststellen kann, ob Apache abgestürzt ist, ohne eine PID-Datei abfragen oder andere böse Hacker-Aktionen ausführen zu müssen. Dies bedeutet auch, dass systemd in der Lage ist, Apache bei einem Absturz automatisch neu zu starten .

Führen Sie systemctl status httpdden Befehl aus , um den Status anzuzeigen. Ein Beispiel sieht so aus:

# 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
quelle
2
Danke, das macht sehr viel Sinn. Um sicherzugehen, dass ich das verstehe, ist es in Ordnung, mit DFOREGROUND zu laufen und es ist tatsächlich gut, nicht schlecht, oder?
Cocorico
3
Ja es ist gut.
Michael Hampton
1
@MichaelHampton Gibt es eine Möglichkeit zu sehen, was genau für ein Prozess ausgeführt wird?
Carla