Confused about DFOREGROUND with Apache

Cocorico asked:

So I just installed Apache on a new CentOS 7 server, using Yum. I’ve installed Apache many times before, but never have I seen this: When I run ps aux now, it always shows

/usr/sbin/httpd -DFOREGROUND

Google tells me that means the process will run in the foreground and not detach from the shell, but I don’t really get what that means – if I close my shell, will Apache die?

I just want to get the normal Apache behaviour, and have httpd run like it always used to, chugging along in the background, do I need to disable DFOREGROUND? (I can’t figure out how to btw)

My answer:


The -DFOREGROUND option does indeed mean that Apache won’t fork, but that doesn’t mean that it’s attached to your shell!

The service is started by systemd when you run systemctl start httpd (or the old style way, service httpd start). It is systemd to which Apache is attached, and systemd is managing the process as one of its children. This is done so that systemd can easily tell whether Apache has crashed, without having to poll a pid file or do other nasty hackery. This also means that systemd is capable of automatically restarting Apache if it does crash.

Run systemctl status httpd to see its status. An example looks like:

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

View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.