尝试重新启动Apache时出现“无法打开日志”错误。

当我尝试启动Apache时,出现以下错误。
root@server11362:~# sudo /etc/init.d/apache2 restart

Restarting web server apache2 (98)Address already in use: 
   make_sock: could not bind to address 111.90.150.93:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information. 

实际上,Apache日志中没有更多的信息。 netstat -tulpn 返回以下内容。
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1098/mysqld     
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      1414/redis-server
tcp        0      0 111.90.150.93:53        0.0.0.0:*               LISTEN      1068/named      
tcp        0      0 111.90.150.92:53        0.0.0.0:*               LISTEN      1068/named      
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1068/named      
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      1194/postgres   
tcp        0      0 0.0.0.0:44888           0.0.0.0:*               LISTEN      845/sshd        
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1395/master     
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1068/named      
tcp        0      0 0.0.0.0:6081            0.0.0.0:*               LISTEN      1435/varnishd   
tcp        0      0 127.0.0.1:6082          0.0.0.0:*               LISTEN      1434/varnishd   
tcp6       0      0 :::53                   :::*                    LISTEN      1068/named      
tcp6       0      0 :::44888                :::*                    LISTEN      845/sshd        
tcp6       0      0 :::25                   :::*                    LISTEN      1395/master     
tcp6       0      0 ::1:953                 :::*                    LISTEN      1068/named      
tcp6       0      0 :::6081                 :::*                    LISTEN      1435/varnishd   
udp        0      0 111.90.150.93:53        0.0.0.0:*                           1068/named      
udp        0      0 111.90.150.92:53        0.0.0.0:*                           1068/named      
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1068/named      
udp6       0      0 :::53

端口80上没有任何东西,但我仍然无法重新启动。
3个回答

可能有更多的东西被损坏了,因为你还会得到其他的。
Unable to open logs

首先,启用更多的日志记录。
LogLevel debug

在你的/etc/apache2/apache2.conf文件中。
检查你的/var/log/apache2文件的权限。
我经常使用以下命令进行调试:
strace -f apache2ctl start 2>&1|grep -v " ENOENT " | grep -Ee " E[A-Z]+"

它会准确地显示哪些呼叫失败了。
[编辑]
另一个原因可能是产生了重叠的监听地址,例如:
Listen *:80
Listen 1.2.3.4:80

所以你监听所有接口,而第二个监听行试图打开一个已经打开的端口。就像这里描述的那样here

文件权限 /var/log/ 是 755 和 640 - user259920
你的日志文件呢? - user224465
640 这是/etc/apache2/sites-availab/courseworkbank.info - user259920
我是说,你有没有也看过/var/log/apache2/error.log这个文件? - user224465
2尊重您的其他帖子,您应该首先检查配置文件中的“Listen”关键字。 - user224465
在我的情况下,问题出在Listen上。同意@user224465的建议,首先在配置文件中查找Listen字符串。如果找不到正在监听的PID,最常见的问题是在同一个虚拟主机定义文件中有两个Listen值。它们可能会重叠,但最好创建单独的虚拟主机文件以避免这种情况。在查找了这个问题之后,我的Apache又重新运行起来了。谢谢。 - m3nda
这个答案帮助很少。在哪里添加"LogLevel debug"?在全局配置中添加吗?还是在站点配置中添加? - Cerin

你是不是试图以非root用户身份启动apache?可能你没有权限将Apache绑定到低于1024的端口(通常只有root用户才能做到),并且日志文件的所有者不是apache:apache,或者是root所有,这会阻止Apache打开它们。
请检查/etc/apache2/logs目录是否属于apache2用户,并确保你以root身份启动服务(同时确保/etc/apache2/conf/apache2.conf(或httpd.conf)中的User和Group指定了正确的用户)。

我的问题是我有一个
Listen 192.168.0.101:80

在站点配置中。

但是在电脑重启之后,我的IP地址已经更改为另一个(192.168.0.102)。修复IP地址解决了问题。