因此,我尝试使用 certbot 为 EC2 上的 WordPress 网站获取 LetsEncrypt 证书(使用 Bitnami 的 AWS 市场镜像,Ubuntu 14.04),但是在运行 certbot --apache 时,我得到以下信息 -
Error while running apache2ctl graceful.
httpd not running, trying to start
Action 'graceful' failed.
The Apache error log may have more information.
AH00112: Warning: DocumentRoot [/var/lib/letsencrypt/tls_sni_01_page/] does not exist
AH00112: Warning: DocumentRoot [/var/lib/letsencrypt/tls_sni_01_page/] does not exist
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
所以日志文件中似乎没有任何内容。运行服务 apache2 status 给出“apache2 未运行”。
然后我做了
sudo lsof -i :80 | grep LISTEN
这给了我-
httpd.bin 1584 root 4u IPv6 9463 0t0 TCP *:http (LISTEN)
httpd.bin 1589 daemon 4u IPv6 9463 0t0 TCP *:http (LISTEN)
httpd.bin 1590 daemon 4u IPv6 9463 0t0 TCP *:http (LISTEN)
httpd.bin 1773 daemon 4u IPv6 9463 0t0 TCP *:http (LISTEN)
我得到了类似的结果
sudo netstat -tulpn | grep :80
这给了我
tcp6 0 0 :::80 :::* LISTEN 1584/httpd.bin
让我觉得 Apache 实际上正在运行,但可能不是相同的版本或其他什么?有人有类似问题的经验吗?
谢谢!
答案1
Listen
您的指令设置为什么?如果在 Linux 上同时监听 IPv4 和 IPv6 地址,唯一的方法是使用映射地址。这就是为什么它只在netstat
.相关 Apache 文档在这里 -https://httpd.apache.org/docs/2.2/bind.html
现在,关于为什么您的certbot
运行会产生错误。 Apache 是否通过命令或通过调用类似或使用的service
脚本来启动/停止/重新启动/重新加载?是否始终如一地这样做?/etc/init.d/apache2
apache2ctl
选择其中一种方法,停止 apache,确保它报告为已停止,重新启动 apache,并查看它是否报告正在运行。然后与其他实用程序检查状态并查看他们是否同意。
一旦各种方法都同意 apache 确实正在运行,然后尝试运行 certbot。虽然说实话,我发现执行该certonly
选项相当简单(您需要停止 apache 来执行此操作 - certbot
/letsencrypt
作为其过程的一部分在 443/80 上生成自己的侦听器)并手动将相关更改添加到我的 apache 配置中文件