一旦我a2enmod ssl模块并重启apache,我就会收到以下错误:
Restarting web server apache2
AH00548: NameVirtualHost has no effect and will be removed in the next
release /etc/apache2/ports.conf:14
(98)Address already in use: AH00072: make_sock: could not bind to address
[::]:443
(98)Address already in use: AH00072: make_sock: could not bind to address
0.0.0.0:443
no listening sockets available, shutting down
AH00015: Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
要停止它,我可以在ports.conf文件中取消注释或注释掉以下模块行:
Listen 80
#<IfModule mod_ssl.c>
# Listen 443
#</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
非常感谢任何帮助
答案 0 :(得分:4)
输出的以下行表明另一个程序已在端口443上侦听,并且由于Apache不支持端口共享,因此无法绑定到该端口,因此它将关闭。
(98)Address already in use: AH00072: make_sock: could not bind to address
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:443
因此,我建议您关闭侦听该端口的程序。您可以使用以下命令确定哪些程序正在侦听TCP端口443(必须以超级用户身份执行):
netstat -tlpn | grep 443
然后关闭已经在监听的程序(例如,使用service <programme> stop
或使用kill <processID>
(进程ID也由netstat
提供)。之后,您可以启动Apache使用service apache2 start
或执行/etc/init.d/apache2 start
。当您使用Ubuntu / Debian时,这两个命令都有效。如果您使用的是CentOS / RedHat,Apache的名称为httpd
。
答案 1 :(得分:0)
错误“ AH00015:无法打开日志”表示您的某个日志定义中缺少文件或目录。如果您的Web服务器上运行了许多虚拟命名站点,则很容易删除旧目录,忘记更新httpd-vhosts.conf
或httpd-ssl.conf
文件以删除配置。
我使用Apache 2.4运行FreeBSD 10.3,因此我的文件可能位于您的另一个位置。但是一旦找到虚拟主机文件所在的位置,解决方案就是一样的。这是您需要做的事情来解决这个问题:
切换到定义虚拟命名主机的目录:
cd /usr/local/www/conf/extra
使用grep从命名中提取所有日志文件引用 虚拟主机定义:
grep -i log * > x.tmp
这将创建一个文件,其中包含显示文件名称的条目,apache日志指令(ErrorLog,CustomeLog,TransferLog)以及日志文件的名称。
使用bash shell设置while读取循环以拉开文件 并在另一个文件中捕获日志文件的名称:
cat x.tmp | while read a b c d; do echo $c >> y.tmp; done
使用您喜欢的编辑器编辑y.tmp
文件以删除任何内容
这看起来不像日志文件(垃圾)的名称。这个垃圾是
使用grep搜索大文件中的文本是不可避免的。一旦
你有一个文件列表(没有别的),插入“ls -la”
前面的文件名。使用vi编辑器,您可以执行此操作
以下命令:
:%s/^/ls -la /
使用sh或bash将文件作为脚本运行,如下所示:
sh y.tmp
它将显示单个文件(如果存在),如果不存在 存在它将显示类似于以下内容的错误:
ls: /usr/local/www/virtual/nsr/logs/access.log: No such file or directory
这可能是由拼写错误,缺少目录或其他原因造成的 其他原因(指向不存在的对象的符号链接)。或 编辑虚拟命名主机定义以从中删除它 配置,或使用正确的权限定义目录 供Web服务器访问。
重新启动Web服务器(apachectl start
)并验证httpd
守护进程正在使用ps awx | grep http
运行。
答案 2 :(得分:0)
直接基于this回答,你应该杀死httpd
(server.port = 80
中有lighttpd.conf
),然后尝试启动apache
。
= Show processes hung =
ps wax | grep httpd
= Kill Process ID 1234 =
kill 1234
= Start Apache24 =
apachectl start
= Verify it is running =
service apache24 status