【问题标题】:httpd Server not started: (13)Permission denied: make_sock: could not bind to address [::]:88httpd 服务器未启动:(13)Permission denied: make_sock: could not bind to address [::]:88
【发布时间】:2013-06-09 09:38:45
【问题描述】:

我正在尝试在 centos 6 上启动 httpd 服务器。它会引发以下错误:

[root@machine ~]# service httpd start
Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:88
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:88
no listening sockets available, shutting down
Unable to open logs
                                                           [FAILED]

我还检查了端口 88,它不是在使用。 我也检查了semanage,但没有帮助。

我们将不胜感激。

【问题讨论】:

  • 将端口添加到 SELinux 对我有用,所以感谢您提供的链接。
  • 编辑 conf 以将 Apache 使用的端口更改为大于 1024 的数字,例如 8080。我在 Windows 中使用 Ubuntu v20 并进行如下编辑:sudo vi /etc/apache2/ports.conf

标签: apache centos


【解决方案1】:

由于缺少 SELinux 权限,我碰巧遇到了这个问题。默认情况下,SELinux 只允许 apache/httpd 绑定到以下端口:

80, 81, 443, 488, 8008, 8009, 8443, 9000

因此,使用默认 SELinux 配置绑定到我的 httpd.conf-configured Listen 88 HTTP 端口和 config.d/ssl.conf-configured Listen 8445 TLS/SSL 端口将失败。

为了解决我的问题,我必须将端口 88 和 8445 添加到我系统的 SELinux 配置中:

  1. 安装semanage工具:sudo yum -y install policycoreutils-python
  2. 允许 httpd 使用端口 88:sudo semanage port -a -t http_port_t -p tcp 88
  3. 允许端口 8445 用于 httpd:sudo semanage port -a -t http_port_t -p tcp 8445

【讨论】:

  • 我认为我在 Mac OS X(达尔文,Unix 变体)上遇到了同样的问题。监听 88 端口 似乎 重启就好了,没有抛出任何错误,但我无法在该端口上的浏览器中得到任何响应。一旦我将其更改为 81,虽然它开始工作得很好。
  • 在 Fedora 24 上使用 dnf install policycoreutils-python-utils
  • 允许非 root 绑定某些端口请参见此处:superuser.com/a/892391/216033
  • -m 选项(修改)作为我需要为其他 selinux 策略定义的端口工作。
  • @Abdull,此 sol 特定于基于 rpm 的操作系统。在 debian 或 ubuntu 上做什么
【解决方案2】:

似乎您不是以“root”身份运行它。只有 root 可以绑定到此端口 (80)。 检查 conf/httpd.conf 文件中的配置,Listen 行并将端口更改为更高的端口。

【讨论】:

  • 你可以使用sudo
  • @Andrew,不,我不能,没有权限
【解决方案3】:

这是 Abdull 在此线程某处的答案的补充:

我不得不修改而不是添加端口

semanage port -m -t http_port_t -p tcp 5000

因为我在添加端口时收到此错误

ValueError: Port tcp/5000 already defined

【讨论】:

    【解决方案4】:

    在终端以root权限运行此命令:

    sudo /etc/init.d/apache2 start
    

    您必须是 root 才能启动网络服务器,否则您会收到类似的错误。

    【讨论】:

    • true 需要 root 用户访问权限。所以 Sudo service apache2 restart 也会像你写的那样重新启动 sudo /etc/init.d/apache2 start
    【解决方案5】:

    在我的 centos 6.7 安装中,我不仅在使用 root 启动 httpd 时遇到问题,而且在使用 xauth 时也遇到问题(获取 /usr/bin/xauth: timeout in locking authority file /.Xauthority 并出现底层权限被拒绝错误)

    # setenforce 0

    修复了这两个问题。

    【讨论】:

    • 这解决了我在 Centos 7 上在另一个端口上运行 apache2 的流浪驱动开发服务器上的问题。请记住,您实际上是在禁用 SELinux——这意味着禁用安全功能。在生产服务器上,最好使用semanage 添加@Abdull 提到的端口
    【解决方案6】:

    禁用 SELinux

    暂时禁用 SELinux

    sudo setenforce 0
    

    重启httpd服务

    service httpd restart
    

    永久禁用 SELinux(重启后)

    vi /etc/selinux/config
    

    添加行并保存

    SELINUX=disabled
    

    【讨论】:

      【解决方案7】:

      在我的情况下,我尝试首先使用端口 88,即使这样 httpd 也不会启动。

      按照其中一位用户的建议,我使用了以下命令,即修改而不是添加,并且能够运行 httpd。

      semanage port -a -t http_port_t -p tcp 88
      

      【讨论】:

        【解决方案8】:

        我编辑了/etc/selinux/config,设置了SELINUX=disabled,然后重启;然后它起作用了。 或者,您可以运行setenforce 0;您不需要重新启动,但这是曾经使用过的。

        【讨论】:

          【解决方案9】:

          在 Linux(Centos 6 或更高版本)中,从 0 到 1024 的端口保留供系统使用。 如果您使用 root 或特权用户,您可以强制系统绑定到任何低于 1024 的端口。

          我使用非 root 用户从源代码安装了 Apache-2.4,我通过允许高于 1024(例如:8080)的端口和修改了 http.conf 文件解决了这个问题。 chang 听80到听8080

          【讨论】:

            【解决方案10】:

            我在 RHEL 7.5 中尝试为 openstack train 安装启动 httpd 服务时也遇到了类似的错误。

            -- Unit httpd.service has begun starting up.
            Jan 31 10:11:16 controller httpd[1631]: (13)Permission denied: AH00072: make_sock: could not bind to address 10.0.0.11:5000
            Jan 31 10:11:16 controller httpd[1631]: no listening sockets available, shutting down
            Jan 31 10:11:16 controller httpd[1631]: AH00015: Unable to open logs
            Jan 31 10:11:16 controller systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
            Jan 31 10:11:16 controller kill[1632]: kill: cannot find process ""
            Jan 31 10:11:16 controller systemd[1]: httpd.service: control process exited, code=exited status=1
            Jan 31 10:11:16 controller systemd[1]: Failed to start The Apache HTTP Server.
            -- Subject: Unit httpd.service has failed
            

            解决方案:通过禁用 SElinux 解决。

            【讨论】:

              【解决方案11】:

              从 root 用户或 sudo 开始,它工作正常,这里是示例输出:

              [ec2-user@ip-172-31-12-164 ~]$ service httpd start
              Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:80
              (13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
              no listening sockets available, shutting down
              Unable to open logs
                                                                         **[FAILED]**
              [ec2-user@ip-172-31-12-164 ~]$ sudo service httpd start
              Starting httpd:                                            [  OK  ]
              [ec2-user@ip-172-31-12-164 ~]$ sudo service httpd status
              httpd (pid  3077) is running...
              

              【讨论】:

                【解决方案12】:

                先杀死所有挂起的httpd实例,然后尝试重启Apache:

                service httpd restart
                

                【讨论】:

                  猜你喜欢
                  • 2016-04-24
                  • 2014-04-14
                  • 2015-03-08
                  • 2015-11-21
                  • 1970-01-01
                  • 2013-08-31
                  • 2014-11-08
                  • 1970-01-01
                  • 2018-09-17
                  相关资源
                  最近更新 更多