Плутати про ДФРЕГУНД з Apache


16

Тому я щойно встановив Apache на новий сервер CentOS 7, використовуючи Yum. Я встановив Apache багато разів раніше, але ніколи цього не бачив: коли я запускаю ps aux зараз, це завжди показує

/ usr / sbin / httpd -DFOREGROUND

Google каже мені, що це означає, що процес буде працювати на передньому плані і не відриватися від оболонки, але я не розумію, що це означає - якщо я закрию свою оболонку, Apache помре?

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


І як ти почав Apache?
Майкл Хемптон

Це трапляється, якщо я роблю "сервіс apache start" або коли сервер запускається і він завантажує сценарій init.d / httpd.
Кокоріко

Що таке сценарій "init.d / httpd"? У вас не повинно бути жодного такого сценарію.
Майкл Хемптон

Майкл: Я скопіював один з мого старого сервера, тому що я не міг знайти інший спосіб його запустити при запуску. Що мені робити замість цього?
Кокоріко

systemctl enable httpd. Дивіться документацію
Майкл Хемптон

Відповіді:


20

Цей -DFOREGROUNDваріант дійсно означає, що Apache не роздвоюється, але це не означає, що він прикріплений до вашої оболонки!

Служба запускається системою під час запуску systemctl start httpd(або за старим стилем, service httpd start). Це система, до якої приєднаний 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 Чи є спосіб побачити, що саме працює один із цих процесів?
carla
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.