httpd服务器未启动:(13)权限被拒绝:make_sock:无法绑定到地址[::]:88

时间:2013-06-13 05:14:36

标签: apache centos

我正在尝试在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,但没有帮助。

任何帮助将不胜感激。

12 个答案:

答案 0 :(得分:115)

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

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

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

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

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

答案 1 :(得分:48)

好像你正在运行它而不是“root”。只有root才能绑定到此端口(80)。 检查conf / httpd.conf文件中的配置,监听行并将端口更改为更高的端口。

答案 2 :(得分:8)

在终端上运行此命令并具有root权限:

sudo /etc/init.d/apache2 start

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

答案 3 :(得分:7)

使用我的centos 6.7安装,我不仅遇到了使用root启动httpd而且还使用xauth(获取/usr/bin/xauth: timeout in locking authority file /.Xauthority并且基础权限被拒绝错误的问题)

# setenforce 0

解决了这两个问题。

答案 4 :(得分:6)

这是Abdull在这个帖子中的答案的补充:

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

semanage port -m -t http_port_t -p tcp 5000

因为我在添加端口时出现此错误

ValueError: Port tcp/5000 already defined

答案 5 :(得分:2)

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

我使用了以下命令,即,根据一个用户的建议,修改而不是添加,并且能够运行httpd。

semanage port -a -t http_port_t -p tcp 88

答案 6 :(得分:2)

禁用SELinux

暂时禁用SELinux

Here is the difference between Perl 5 and Perl 6 pack/unpack:

Perl 5                      Perl 6

pack(List)  --> Str         pack(List)  --> Buf
unpack(Str) --> List        unpack(Buf) --> List

重新启动httpd服务

sudo setenforce 0

永久禁用SELinux(重新启动后)

service httpd restart

添加行并保存

vi /etc/selinux/config

答案 7 :(得分:2)

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

答案 8 :(得分:0)

从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...

答案 9 :(得分:0)

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

我以非root用户身份从源代码安装了Apache-2.4,并通过允许端口高于1024(例如:8080)并修改了http.conf文件来解决了此问题。昌听80听8080

答案 10 :(得分:0)

在尝试为RHEL 7.5中的Openstack火车安装启动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 :(得分:-2)

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

service httpd restart