我有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
))
我想在httpd -l
的答案中看到prefork.c,也想在/etc/httpd/conf/httpd.conf
中看到prefork模块
我该怎么办?
感谢分享。
答案 0 :(得分:0)
httpd -l
仅列出在服务器中编译时添加的模块,作为静态模块。
LoadModule
指令调用其他模块,可以将它们作为DSO(动态共享对象)动态地加载。
您可以使用httpd -M
而不是httpd -l
列出它们(以及静态列表)。如果prefork模块出现在列表中,那是因为它已加载并且正在工作。
静态和DSO两种方法都可以很好地工作,并且您可以(并且应该应该)使用DSO没问题。
关于prefork配置,可以将其直接插入httpd.conf中,或者(根据您的情况)插入另一个文件中,然后使用Include
指令将其“合并”到服务器配置中在httpd.conf中。
您可以通过查找已存储的包含文件来找到要搜索的prefork配置(您应该有一个/etc/httpd/conf.modules.d/00-mpm.conf
,但在最坏的情况下,一个一个地打开它们最终会给您一些结果)。如果确实需要,可以从那里剪切它,然后直接粘贴到httpd.conf中。
最后,如果您真的想看到prefork模块出现在静态模块列表中,则必须手动 configure and compile apache源,将该特定模块添加为静态在此过程中。
您可以在apache docs上阅读有关此问题的更多信息,并且,如果您决定采用这种方式,您可能会发现此问题更适合ServerFault网站。