Запутался в DFOREGROUND с Apache

16

Поэтому я только что установил Apache на новый сервер CentOS 7, используя Yum. Я устанавливал Apache много раз раньше, но никогда не видел этого: когда я запускаю ps aux сейчас, он всегда показывает

/ usr / sbin / httpd -DFOREGROUND

Google говорит мне, что это означает, что процесс будет выполняться на переднем плане, а не отделяться от оболочки, но я не совсем понимаю, что это значит - если я закрою свою оболочку, Apache умрет?

Я просто хочу получить нормальное поведение Apache и запускать httpd, как всегда, с фонтанированием, нужно ли отключить DFOREGROUND? (Я не могу понять, как кстати)

Cocorico
источник
А как ты запустил Apache?
Майкл Хэмптон
Это происходит, если я запускаю «service apache start» или когда сервер запускается и загружает скрипт init.d / httpd.
Cocorico,
Какой скрипт "init.d / httpd"? У вас не должно быть такого сценария.
Майкл Хэмптон
Майкл: Я скопировал один со своего старого сервера, потому что я не мог найти другой способ запустить его при запуске. Что я должен делать вместо этого?
Cocorico,
systemctl enable httpd, Смотрите документацию
Майкл Хэмптон

Ответы:

20

-DFOREGROUNDВариант действительно означает , что Apache не будет развилка, но это не значит , что он подключен к оболочке!

Служба запускается systemd при запуске systemctl start httpd(или в старом стиле service httpd start). Это systemd, к которому подключен Apache, и systemd управляет процессом как один из его дочерних элементов. Это сделано для того, чтобы systemd мог легко определить, произошел ли сбой Apache, без необходимости опрашивать pid-файл или выполнять другие неприятные действия. Это также означает, что systemd способен автоматически перезапускать Apache в случае сбоя.

Запустите, systemctl status httpdчтобы увидеть его статус. Пример выглядит так:

# 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
Спасибо, это имеет большой смысл. Поэтому, чтобы быть уверенным, что я все понимаю, нормально работать с DFOREGROUND, и это на самом деле хорошо, а не плохо, верно?
Кокорико,
3
Да нормально
Майкл Хэмптон
1
@MichaelHampton Есть ли способ увидеть, что именно один из этих процессов выполняется?
Карла