apachectl 和 httpd.worker 有什么区别?

Mer*_*glu 6 linux process apache-2.2

我的托管服务 Webfaction 会自动为 django/python 应用程序安装 apache 启动脚本。安装的启动脚本是:

#!/bin/bash
LD_LIBRARY_PATH=/home/mertnuhoglu/webapps/dj02/apache2/lib /home/mertnuhoglu/webapps/dj02/apache2/bin/httpd.worker -f /home/mertnuhoglu/webapps/dj02/apache2/conf/httpd.conf -k start
Run Code Online (Sandbox Code Playgroud)

此脚本启动一个httpd.worker实例:

 3364       00:03  8950 /home/mertnuhoglu/webapps/dj02/apache2/bin/httpd.worker
Run Code Online (Sandbox Code Playgroud)

最近,我关注自定义应用程序安装的教程。在本教程中,启动脚本定义为:

#!/bin/bash
/home/rocketmonkeys/webapps/django/apache2/bin/apachectl start
Run Code Online (Sandbox Code Playgroud)

此脚本启动httpd -k start

 0.0  1620 17462 /home/mertnuhoglu/webapps/django/apache2/bin/httpd -k start
Run Code Online (Sandbox Code Playgroud)

我想问三件事:

  1. 这两种启动apache服务器的方式有什么区别?

  2. 在第一个脚本中,运行的是哪个可执行文件(httpd.workerhttpd.conf其他)?

  3. 为什么httpd第二个例子中的实例有-k start参数?这是由于apachectl吗?

小智 7

  1. apachectl是一个包装器httpd,只是设置了一些环境变量并添加了更多功能,例如configtest更详细的herehttpd.worker就像httpd但启用了工作模块

  2. 第一个脚本httpd.worker使用httpd.conf配置文件执行二进制文件。

  3. 正确,apachectl-k start参数附加到httpd