启用S​​SL后,Apache不会重启

时间:2015-02-18 15:25:36

标签: ssl apache2

一旦我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

非常感谢任何帮助

3 个答案:

答案 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.confhttpd-ssl.conf文件以删除配置。

我使用Apache 2.4运行FreeBSD 10.3,因此我的文件可能位于您的另一个位置。但是一旦找到虚拟主机文件所在的位置,解决方案就是一样的。这是您需要做的事情来解决这个问题:

  1. 切换到定义虚拟命名主机的目录:

    cd /usr/local/www/conf/extra

  2. 使用grep从命名中提取所有日志文件引用 虚拟主机定义:

    grep -i log * > x.tmp

  3. 这将创建一个文件,其中包含显示文件名称的条目,apache日志指令(ErrorLog,CustomeLog,TransferLog)以及日志文件的名称。

    1. 使用bash shell设置while读取循环以拉开文件 并在另一个文件中捕获日志文件的名称:

      cat x.tmp | while read a b c d; do echo $c >> y.tmp; done

    2. 使用您喜欢的编辑器编辑y.tmp文件以删除任何内容 这看起来不像日志文件(垃圾)的名称。这个垃圾是 使用grep搜索大文件中的文本是不可避免的。一旦 你有一个文件列表(没有别的),插入“ls -la” 前面的文件名。使用vi编辑器,您可以执行此操作 以下命令:

      :%s/^/ls -la /

    3. 使用sh或bash将文件作为脚本运行,如下所示:

      sh y.tmp

      它将显示单个文件(如果存在),如果不存在 存在它将显示类似于以下内容的错误:

      ls: /usr/local/www/virtual/nsr/logs/access.log: No such file or directory

    4. 这可能是由拼写错误,缺少目录或其他原因造成的 其他原因(指向不存在的对象的符号链接)。或 编辑虚拟命名主机定义以从中删除它 配置,或使用正确的权限定义目录 供Web服务器访问。

    5. 重新启动Web服务器(apachectl start)并验证httpd 守护进程正在使用ps awx | grep http运行。

答案 2 :(得分:0)

直接基于this回答,你应该杀死httpdserver.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