在 Centos 5.5 上安装 Apache MPM Worker

在 Centos 5.5 上安装 Apache MPM Worker

我有一台 CentOS 5.5. 服务器,正在尝试从 MPM Prefork 切换到 MPM worker。我目前安装了标准的 yum httpd 包,根据我的阅读,我做了以下事情:

  • 取消注释 /etc/sysconfig/httpd 文件中的 httpd.worker 行。
  • 我还确保 httpd.worker 文件存在于 /usr/sbin/ 目录中。
  • 在进行上述更改之前,我还确保 httpd 服务已停止。
  • 确保已为 Apache 禁用 PHP。我对此很满意,一旦我启动并运行 MPM 工作程序,我就会使用 FastCGI 来处理 PHP 文件。

  • 重新启动httpd服务,一切正常。

  • 执行 # httpd -V
  • 控制台告诉我它仍在使用 prefork。

如果我执行 # vi /etc/init.d/httpd,httpd.worker 行仍被注释掉。我也尝试过更改它,但没有任何区别。

有什么建议吗?需要注意什么?我的应用程序需要 worker MPM,所以我能想到的唯一选择是使用 ubuntu 或其他具有专用 apache2-mpm-worker 包的版本。yum 存储库中是否有类似的东西?

提前致谢!

答案1

在我的系统上,我刚刚编辑了 /etc/sysconfig/httpd 文件以启用 httpd.worker。

重新启动 httpd 后,我运行“ps -ef | grep -i http”并得到以下结果:

[root@localhost httpd]# ps -ef | grep -i http
root     16334 17289  0 10:44 pts/1    00:00:00 grep -i http
root     30536     1  0 10:00 ?        00:00:00 /usr/sbin/httpd.worker
apache   30539 30536  0 10:00 ?        00:00:00 /usr/sbin/httpd.worker
apache   30541 30536  0 10:00 ?        00:00:02 /usr/sbin/httpd.worker
[root@localhost httpd]# 

如果我将 /etc/sysconfig/httpd 切换回默认值,ps 输出将如下所示:

[root@localhost httpd]# ps -ef | grep -i http
root     16447     1  0 10:47 ?        00:00:00 /usr/sbin/httpd
apache   16448 16447  0 10:47 ?        00:00:00 /usr/sbin/httpd
apache   16449 16447  0 10:47 ?        00:00:00 /usr/sbin/httpd
apache   16450 16447  0 10:47 ?        00:00:00 /usr/sbin/httpd
apache   16451 16447  0 10:47 ?        00:00:00 /usr/sbin/httpd
apache   16453 16447  0 10:47 ?        00:00:00 /usr/sbin/httpd
apache   16454 16447  0 10:47 ?        00:00:00 /usr/sbin/httpd
apache   16455 16447  0 10:47 ?        00:00:00 /usr/sbin/httpd
apache   16456 16447  0 10:47 ?        00:00:00 /usr/sbin/httpd
root     16458 17289  0 10:47 pts/1    00:00:00 grep -i http
[root@localhost httpd]# 

在这种情况下,“httpd -V”输出与之前相同。

由于正在运行的进程数与我在“/etc/httpd/conf/httpd.conf”中设置的 prefork 和 worker 模块的配置选项相匹配,所以我相信它可以按宣传的那样运行。

我怀疑“httpd -V”报告了默认编译。因为:服务器二进制名称不同。httpd(prefork,default)!= httpd.worker(非默认)

答案2

我猜想最快的方法是用 httpd 替换 httpd.worker,然后重新启动 httpd。有时您的应用程序使用绝对路径调用 httpd。

相关内容