【问题标题】:Apache http server problemsApache http 服务器问题
【发布时间】:2012-07-07 02:45:21
【问题描述】:

我正在使用 Apache 版本 2.2.20 (ubuntu) 并尝试使用自定义的 httpd.conf 设置,但是我收到以下错误消息,希望能给予我任何指导。我是开发团队的一员,并获得了这个自定义 httpd.conf 文件,所以我并不认为它是问题的原因(但我并不完全排除这种可能性)。

我运行命令“sudo apache2ctl -k restart”得到如下结果

[Fri Jul 06 11:33:34 2012] [warn] module ssl_module is already loaded, skipping
[Fri Jul 06 11:33:34 2012] [warn] module rewrite_module is already loaded, skipping
httpd not running, trying to start
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action '-k restart' failed.
The Apache error log may have more information.

如果我注释掉 httpd.conf 文件中的行(如下),我可以摆脱这两个警告。我真的想这样做吗?我可以去哪里验证这些模块是否已加载到其他地方并且在我的 conf 文件中将它们注释掉不会有任何伤害?

LoadModule ssl_module modules/mod_ssl.so
LoadModule rewrite_module modules/mod_rewrite.so

关于无法绑定到 80 端口的错误,我无法让它消失。当我执行“sudo netstat -lnp | grep :80”时,我得到以下信息

tcp        0      0 0.0.0.0:80       0.0.0.0:*      LISTEN      6233/apache2

我知道上面的输出意味着 apache 认为它正在运行,有一段时间我什至能够看到“它成功了!”当我导航到 localhost 时的页面,但是现在当我转到该页面时,我只会在 localhost 端口 443 上找到“未找到 Apache/2.2.20 (ubuntu) 服务器”。此外,我似乎无法杀死运行“kill -9 6233”命令的 apache 进程,只会导致 apache 的 PID 发生变化(例如从 6233 到 6234)。我也尝试使用命令“sudo etc/init.d/apache2 stop”,它会产生“* Stopping web server apache2 [ OK ]”消息,但我再次看到 apache2 进程占用了端口 80。

我们将不胜感激有关任何这些问题的想法。

【问题讨论】:

  • 看起来您可能已经运行了另一个 Apache 实例。尝试从根 (/) 搜索“apache”??
  • 我重新启动了机器,现在端口 80 上不再有进程运行(无论如何根据“sudo netstat -lnp | grep :80”)。但是apache不会运行。我收到以下错误“(98)地址已在使用中:make_sock:无法绑定到地址 0.0.0.0:80 没有可用的侦听套接字,正在关闭无法打开日志操作'-k start'失败。”
  • 我希望我不会在这里混淆这个问题,但我在我的 httpd.conf 文件中注释掉了 Listen 80 和 Listen 443。我运行了“apache2ctl -k start”命令。我没有收到任何消息,现在我看到 apache2 在端口 80 上运行,但是当我导航到 localhost 时,我仍然到达“未找到”页面

标签: apache2 apache


【解决方案1】:

看:“模块 xxx_module 已加载

回答:您不止一次加载这些模块。尝试搜索并评论/删除有问题的行:

在 Centos/RHEL 中:

grep ssl_module -rI /etc/httpd/*   
/etc/httpd/conf/httpd.conf:LoadModule ssl_module /usr/lib64/httpd/modules/mod_ssl.so
/etc/httpd/conf.d/ssl.conf:LoadModule ssl_module modules/mod_ssl.so

在这种情况下 ^ 我在 /etc/httpd/conf/httpd.conf 中注释掉了一行,所以所有 SSL 内容都存在于 /etc/httpd/conf.d/ssl.conf

rewrite_module 也一样

grep rewrite_module -rI /etc/httpd/*

在 Debian/Ubuntu 中:

grep ssl_module -rI /etc/apache2/*

【讨论】:

    【解决方案2】:

    我在使用 SSL 密钥和密码时遇到了类似的问题。我为使其运行所做的工作是:

    sudo pkill apache2
    sudo /etc/init.d/apache2 start
    

    我不建议从您的 Apache 配置中删除 Listen *:80

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 2011-02-21
      • 1970-01-01
      相关资源
      最近更新 更多