当前位置: 首页>>技术教程>>正文


server – 启动Apache2时为什么会出现“权限被拒绝:make_sock:无法绑定到地址”的提示?

, ,

问题描述

我可以使用停止它

/etc/init.d/apache2 stop

但是当我想再次使用以下方法启动它时:

/etc/init.d/apache2 start

我收到此错误:

Starting web server apache2                                                  /usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
(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
Action 'start' failed.
The Apache error log may have more information.
                                                                         [fail]

最佳回答

关于您所得到的错误的一些信息,希望将来可以将您从类似情况中解救出来。

在Linux中,端口0到1024保留供系统使用。这意味着要使用一个,您必须有权更改-访问基本系统设置。 root用户具有这种特权,并且可以实际使用0到1024范围内的端口。

如您所见,在您的问题中,系统通过Apache2响应指示了问题的根源(无法绑定到等等80):

(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

Apache2 http守护程序启动时,它将尝试绑定80端口,因为它是HTTP see中使用的默认端口,该端口是系统分配的端口内的端口,因此只能由root用户访问。

您以没有root特权的典型用户身份执行了start命令,从而导致执行失败。

简单来说:

您:

Hi Apache2. I am Kongthap and I am telling you to start (/etc/init.d/apache2 start)

Apache2:

OK. I am starting (Starting web server apache2)

System, please give me port 80 to use and listen for connections.

系统:

OK. One moment to check…

Ahh… Sorry Apache2 but I cannot let you run at 80 port, it is for personal use.

And you do not have the correct privileges to bind it. (Operation not permitted)

Apache2:

Ohh, Kongthap I failed to start, the System did not let me do it ((13)Permission denied:[...])

结论

该问题主要有两种解决方案:

  1. 使用sudo以root特权运行Apache2 HTTP守护程序:

    sudo service apache2 start
    

    要么:

    sudo /etc/init.d/apache2 start
    
  2. 将默认端口从80更改为大于1024的端口,例如200025009000等。在这种情况下要运行的典型端口是8080

    sudo vi /etc/apache2/ports.conf
    

    寻找或不存在添加:

    Listen 8080
    

    或您选择的任何其他端口,例如端口> 1024,并且所选端口未被其他进程使用。

次佳回答

以下是启动/停止/重新启动Apache服务器的命令:

  • 开始:

    sudo /etc/init.d/apache2 start
    
  • 停止:

    sudo /etc/init.d/apache2 stop
    
  • 重新启动:

    sudo /etc/init.d/apache2 restart
    

第三种回答

通过发出命令检查selinux端口上下文

semanage port -l | grep http

如果它在http_port_t列表中,则可以,否则,请通过以下方式添加您的端口

semanage port -a -t http_port_t -p tcp 80

或您要分配的内容。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11550.html,未经允许,请勿转载。