64

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

任何帮助将不胜感激。

4

13 回答 13

131

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

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

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

为了解决我的问题,我必须将端口 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. 允许 httpd 使用端口 8445:sudo semanage port -a -t http_port_t -p tcp 8445
于 2014-03-16T19:38:28.567 回答
53

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

于 2013-07-09T08:08:58.603 回答
14

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

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

semanage port -m -t http_port_t -p tcp 5000

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

ValueError: Port tcp/5000 already defined

于 2017-06-13T11:04:36.750 回答
7

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

sudo /etc/init.d/apache2 start

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

于 2014-02-23T09:21:14.830 回答
7

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

# setenforce 0

修复了这两个问题。

于 2016-06-05T12:33:14.720 回答
4

禁用 SELinux

暂时禁用 SELinux

sudo setenforce 0

重启httpd服务

service httpd restart

永久禁用 SELinux(重启后)

vi /etc/selinux/config

添加行并保存

SELINUX=disabled
于 2018-11-26T14:17:36.070 回答
3

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

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

semanage port -a -t http_port_t -p tcp 88
于 2018-07-01T00:54:04.553 回答
1

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

于 2020-06-04T08:56:16.360 回答
0

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

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

于 2019-10-17T08:32:41.787 回答
0

只是为了添加有关此错误的更多信息,我在 CentOS 8.2 上遇到了类似的错误:

sudo journalctl -xe

错误:权限被拒绝:AH00072:make_sock:无法绑定到地址 0.0.0.0:8081

因此,我使用了来自 Abdull 和 Ulrich-Lorenz Schlüter 的命令,如下所示:

  1. 为 CentOS 8.2 安装 semanage 工具:(sudo yum -y install policycoreutils-python-utils 更多信息:https ://www.cyberciti.biz/faq/redhat-install-semanage-selinux-command-rpm )

  2. 允许 httpd 使用端口 8081:sudo semanage port -a -t http_port_t -p tcp 8081

我得到以下输出: ValueError: Port tcp/8081 already defined

所以,我跑了:

sudo semanage port -m -t http_port_t -p tcp 8081

正如 Ulrich-Lorenz Schlüter 所说。

  1. 然后:sudo systemctl start httpd

现在它工作正常。

于 2022-02-23T15:36:40.207 回答
0

在 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 解决。

于 2020-01-31T15:22:21.700 回答
-1

从 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...
于 2018-05-24T02:13:45.330 回答
-5

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

service httpd restart
于 2017-10-12T05:19:06.127 回答