对DFOREGROUND与Apache感到困惑


16

因此,我只是使用Yum在新的CentOS 7服务器上安装了Apache。我以前安装过Apache很多次,但是从未见过:现在运行ps aux时,它总是显示

/ usr / sbin / httpd -DFOREGROUND

Google告诉我,这意味着该过程将在前台运行,而不是与shell分离,但是我并没有真正理解这意味着什么-如果我关闭shell,Apache会死吗?

我只想获取正常的Apache行为,并像往常一样运行httpd,并在后台进行调整,是否需要禁用DFOREGROUND?(我不知道该怎么做)


您是如何启动Apache的?
迈克尔·汉普顿

如果执行“服务apache启动”或服务器启动并加载init.d / httpd脚本,则会发生这种情况。
Cocorico

什么是“ init.d / httpd”脚本?您不应有任何此类脚本。
迈克尔·汉普顿

迈克尔:我从旧服务器上复制了一个,因为我想不出另一种方法让它在启动时启动。我应该怎么做呢?
Cocorico 2014年

systemctl enable httpd。参见文档
迈克尔·汉普顿

Answers:


20

-DFOREGROUND选项确实的确意味着Apache不会派生,但这并不意味着它已连接到您的shell!

服务在运行时由systemd启动systemctl start httpd(或使用旧式方式service httpd start)。Apache已连接到systemd上,并且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一起运行就可以了,这实际上很好,还不错,对吧?
Cocorico 2014年

3
是的,很好。
迈克尔·汉普顿

1
@MichaelHampton有没有办法查看这些进程中到底正在运行的是什么?
卡拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.