【问题标题】:"make_sock: could not bind to address [::]:443" when restarting apache (installing trac and mod_wsgi)“make_sock:无法绑定到地址 [::]:443” 重新启动 apache(安装 trac 和 mod_wsgi)
【发布时间】:2012-02-26 23:23:44
【问题描述】:

我正在尝试通过 SSL 安装 trac 和 mod_wsgi。我尝试手动安装它,但效果不佳,所以我开始关注:trac-on-ubuntu

我跳过了 svn 部分,因为我想改用 git。第一次编辑 httpd.conf 后:

WSGIScriptAlias /trac /var/trac/apache/trac.wsgi

<Directory /var/trac/apache>
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
</Directory>

我重启了 apache 才得到这个错误:

* Restarting web server apache2                                                    

(98)Address already in use: make_sock: could not bind to address [::]:443

                                                                     [ OK ]

这样做没有任何结果。

 netstat -anp | grep 443 
 fuser 443/tcp

除了我运行的 grep 命令之外,这样做并没有产生任何结果:

ps -aux | grep httpd

为什么没有任何东西显示,却说有其他东西正在使用该端口?

编辑:你们会笑的。我在 ports.conf 中有一个不应该存在的额外 Listen 443。删除解决了这个问题。

【问题讨论】:

  • 很好,您找到了额外的 Listen 语句。在我进行您的编辑之前,我会建议尽可能多的原因。 :-)
  • 您可能希望将您的编辑重新写入答案并接受它。这是将问题标记为“已解决”且不需要更多支持的推荐方式。
  • 不幸的是,我遇到了这个问题,但额外的“Listen 443”不是原因......
  • 我遇到了完全相同的问题。从 ports.conf 中删除了最上面的 443,重新启动了 apache2,一切正常。
  • 8 年后,另一个不想提及他的名字的人遇到了这个问题。当然,8 年后搜索您在堆栈溢出时出现的错误消息。这就是为什么我只需要发布一条消息;)

标签: apache ubuntu mod-wsgi trac


【解决方案1】:

你们会笑的。我在 ports.conf 中有一个不应该存在的额外 Listen 443。删除解决了这个问题。

【讨论】:

  • 谢谢,我的在 /etc/httpd/conf.d/ssl.conf
  • 我用 YUM 更新了 apache,它创建了一个新的 ssl.conf 文件和另一个监听 443....
  • 谢谢...总有一天,我希望有一个像 apache 一样广泛部署的网络服务器,配置起来不会让人头疼
  • 在我的例子中,Centos 上的 httpd 升级导致了 ssl.conf 的重新安装...但是我们在不同的配置文件中声明了 Listen 443。 Puppet 删除了 ssl.conf... 但 puppet 在乘客/httpd 下运行。所以 puppet 代理从来没有机会删除 ssl.conf,所以有 2 个 Listen 443 指令,如此处所述。
  • 我运行了 certbot,它在我的配置文件中插入了另一个 443 条目。谢谢!
【解决方案2】:

我正在为此添加另一个答案,因为我遇到了同样的问题并以同样的方式解决了它: 我已经使用a2enmod ssl在apache2上安装了SSL,这似乎在/etc/apache2/ports.conf中添加了额外的配置:

NameVirtualHost *:80
Listen 80

NameVirtualHost *:443
Listen 443

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

我不得不注释掉NameVirtualHost *:443 指令之后的第一个Listen 443

NameVirtualHost *:443
#Listen 443

但我想我也可以让它并评论其他人。 无论如何,谢谢你的解决方案:)

【讨论】:

    【解决方案3】:

    我正在使用 Ubuntu。我刚刚禁用了 apache2 的 ssl 模式,它对我有用。

    a2dismod ssl
    

    然后重启apache2。

    service apache2 restart
    

    【讨论】:

      【解决方案4】:

      我已经检查并修复了以下问题并解决了 -

      1. httpd.conf 文件位于/etc/httpd/conf/
      2. 检查了监听 IP 和端口,例如10.12.13.4:80
      3. 移除了额外的监听端口
      4. 重启httpd服务取

      【讨论】:

        【解决方案5】:

        感谢您的回答,在 apache 2.4.x 版本上如果已经使用 yum 命令安装了 ssl_module,不想在 httpd.conf (main) 文件中添加端口 :443

        要找出配置文件中的443端口,

        # grep '443' /etc/httpd/conf.d/*
        
        /etc/httpd/conf.d/ssl.conf:Listen 443 https
        /etc/httpd/conf.d/ssl.conf:<VirtualHost _default_:443>
        /etc/httpd/conf.d/ssl.conf:#ServerName www.example.com:443
        
        # grep '443' /etc/httpd/conf/httpd.conf 
        Listen 443
        

        只需从 httpd.conf 文件中删除该行或命令它(听 443)。

        【讨论】:

        • 这成功了!就我而言,该错误出现在yum update :-P 之后
        【解决方案6】:

        对于没有重复 Listen 指令且端口上没有正在运行的进程的其他所有人:检查您是否不小心在 apache2.conf 中包含了两次 ports.conf(就像我因为合并错误而做的那样)。

        【讨论】:

          【解决方案7】:

          当我启动XAMPP时,我在windows7,phpeclipse中遇到了这个问题。 我的解决方案是:

          • 1.注释掉\xampp\apache\conf\httpd.conf -> line171 -> #LoadModule ssl_module modules/mod_ssl.so

          • 2.line539 -> #Include conf/extra/httpd-ssl.conf

          或者您可以将443端口更改为另一个

          【讨论】:

            【解决方案8】:

            我附议了马修的回答

            我在httpd-ssl文件中注释了#Listen 443,apache可以启动了

            因为文件已经有 VirtualHost default:443

            【讨论】:

              【解决方案9】:

              改为在 httpd.conf 中:

              Listen *:443
              

              你需要写Listen 127.0.0.1:443 它对我有用。

              【讨论】:

              • 如果您只想限制接受与本地主机环回接口的连接,则只能在监听语句中使用127.0.0.1。正如许多人所说,删除重复的Listen 语句是更典型的解决方案。如果您在*:443 上有重复项,那么将其中一个更改为使用127.0.0.1 应该不会真正产生影响,因为另一个*:443 仍会尝试在127.0.0.1 上绑定相同的端口。
              【解决方案10】:

              我在 /etc/httpd/conf.d 目录中错误地命名了一个备份文件。在自述文件中,它声明它按字母顺序遍历所有 .conf 文件。

              我创建了 ssl-date>.conf(作为备份),它在 ssl.conf 之前加载。它基于 ssl-date>.conf 绑定 :443 端口,但在 ssl.conf 上失败。

              一旦我将备份文件重命名为 ssl.conf。日期>,服务启动没有问题。

              请注意,我所在的服务器正在运行 RHEL 6

              【讨论】:

              • 这样的事情发生在我身上,所以我想我会提到它以防它帮助某人。我重命名了 ssl.conf,所以我记得它被设置为使用letsencrypt。后来,我允许我认为是对 Apache 的一个小更新。该更新将 ssl.conf 放回 conf.d,从而在 Listen 语句中产生冲突。除了保持警惕,不知道该怎么做。如果我坚持使用默认的 ssl.conf 文件名,更新可能会破坏它!
              • 我做了同样的事情,Apache 无法启动。我已经删除了那个备份文件,它开始工作了。非常感谢您的回答,您是救生员。
              • 这就是答案!
              【解决方案11】:

              我用的是apache 2.4.27版本,也有这个问题,通过修改解决了

              conf/extra/httpdahssl.conf,注释18行内容(Listen 443 https),​​效果很好。

              【讨论】:

              • 如果您评论此行,您可以使用 https 吗?
              【解决方案12】:

              让我再补充一个错误原因。在 httpd.conf 我明确包含

              Include etc/apache24/extra/httpd-ssl.conf
              

              虽然没有注意到之前的通配符

              Include etc/apache24/extra/*.conf
              

              Grepping 443 不会找到这个。

              【讨论】:

                【解决方案13】:

                我有同样的问题,是由于 /etc/httpd/conf.d 中有多个 ssl.conf 副本 - 应该只有一个。

                【讨论】:

                • 抱歉,这是评论,不是答案。如果您有更多关于解决方案的信息,请告诉我们。
                • 真正的解释是,differs ssl.conf 中存在的“Listen 443”比 differents 配置文件中的更多。仅删除“Listen 443”即可解决问题。
                猜你喜欢
                • 2018-03-20
                • 2014-07-10
                • 1970-01-01
                • 2016-11-11
                • 2012-12-25
                • 2011-05-23
                • 2018-12-05
                • 2012-04-26
                相关资源
                最近更新 更多