0

我有 CentOS 7,我的 apache 版本是 2.4.6。我输入了这个命令:

httpd -l

这是答案:

Compiled in modules:
  core.c
  mod_so.c
  http_core.c

因此,我在这些模块中看不到 prefork.c。另外,我在 /etc/httpd/conf/httpd.conf 中看不到 prefork 模块,但答案httpd -V | grep "Server MPM"是:

Server MPM:     prefork

此外,这些链接的建议没有帮助: apache2-prefork-dev installation Prefork MPM configuration not in httpd.conf ((这意味着安装httpd-devel没有帮助,并且添加以下行/etc/httpd/conf.modules.d/00-mpm.conf并没有解决我的问题:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

StartServers           5
ServerLimit            256
MaxRequestWorkers      256
MaxConnectionsPerChild 0

)) 我想在答案中看到 prefork.chttpd -l并且我想在/etc/httpd/conf/httpd.conf 我应该做什么中看到 prefork 模块?感谢分享。

4

1 回答 1

1

httpd -l仅列出在服务器中编译时添加的模块,作为静态模块。

其他模块可以作为 DSO(动态共享对象)动态加载LoadModule,方法是使用 conf 文件中的指令调用它们。httpd -M您可以使用而不是列出它们(以及静态的)httpd -l。如果 prefork 模块出现在列表中,那是因为它已加载并正在工作。

静态和 DSO 两种方法都运行良好,您可以(并且可能应该)毫无问题地使用 DSO。

关于 prefork 配置,它可以直接插入到 httpd.conf 中,或者(似乎是你的情况)另一个文件中,然后在服务器配置中与Includehttpd.conf 中的指令“合并”。您可以通过查找它已存储到哪个包含文件来找到您搜索的 prefork 配置(您应该有一个/etc/httpd/conf.modules.d/00-mpm.conf,但最坏的情况是,一个一个打开它们最终应该会给您一些结果)。如果你真的想要,你可以从那里剪下来,然后直接粘贴到 httpd.conf 中。

最后,如果你真的想看到 prefork 模块出现在静态模块列表中,你将不得不手动配置和编译apache 源,在过程中将该特定模块添加为静态。

您可以在apache docs上阅读更多相关信息,并且,如果您决定采用这种方式,您可能会发现这个问题更适合ServerFault网站。

于 2018-11-27T20:34:56.353 回答