我正在尝试在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,但没有帮助。
任何帮助将不胜感激。
答案 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配置中:
semanage
工具:sudo yum -y install policycoreutils-python
sudo semanage port -a -t http_port_t -p tcp 88
sudo semanage port -a -t http_port_t -p tcp 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