问题描述
我可以使用停止它
/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:[...]
)
结论
该问题主要有两种解决方案:
-
使用
sudo
以root特权运行Apache2 HTTP守护程序:sudo service apache2 start
要么:
sudo /etc/init.d/apache2 start
-
将默认端口从
80
更改为大于1024
的端口,例如2000
,2500
,9000
等。在这种情况下要运行的典型端口是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
或您要分配的内容。