如何使 Apache 2.4 默认以单工作模式工作?

如何使 Apache 2.4 默认以单工作模式工作?

我的服务器上使用的是 Apache 2.4。我的脚本使用了很多system()命令,它们需要在单一进程模式下运行。

当我使用以下命令启动 apache 时:

apachetctl -X

(通常是调试模式,如果我没记错的话,它作为单个进程工作),它工作正常。但是,如果我将 Apache 作为系统守护进程启动,它就不再工作,并给出一些非常奇怪的结果。

我评论了以下行httpd.conf

LoadModule mpm_event_module modules/mod_mpm_event.so

它没有帮助,然后我取消注释它并在httpd-mpm.conf文件中给它以下配置:

<IfModule mpm_event_module>
    StartServers             1
    MinSpareThreads          1
    MaxSpareThreads          1
    ThreadsPerChild          1
    MaxRequestWorkers        1
    MaxConnectionsPerChild   0
</IfModule>

但它仍然不起作用。在/etc/httpd/modules/目录中我还有其他与线程和进程相关的模块:

mod_mpm_event.so
mod_mpm_worker.so
mod_mpm_prefork.so

我在文档中看到它们应该在 Apache 中预编译,但是当我调用命令时apachectl -l我得到的只是这些:

# apachectl -l               
Compiled in modules:
  core.c
  mod_so.c
  http_core.c

因此,我的问题如下。如何配置 Apache 2.4,以便它能够以与使用命令启动相同的模式工作apachectl -X。非常感谢。

答案1

缺少的是ServerLimit定义。一旦我添加了它,问题就解决了。现在所有system()命令都正常工作,并且我的行为与调试模式下完全相同。

<IfModule mpm_event_module>
    StartServers             1
    MinSpareThreads          1
    MaxSpareThreads          1
    ThreadsPerChild          1
    MaxRequestWorkers        1
    MaxConnectionsPerChild   0
    ServerLimit              1
</IfModule>

相关内容