我正在运行 EC2 Linux 2 AMI,并且正在关注AWS 教程在我的服务器上启用 HTTPS。
但当我尝试重新启动 Apache 时,日志中显示错误:
Apr 10 06:56:40 <maskediphere> systemd[1]: Starting The Apache HTTP Server... Apr 10 06:56:40 <maskediphere> httpd[30696]: (98)Address already in use: AH00072: make_sock: could not bind t...:]:80 Apr 10 06:56:40 <maskediphere> httpd[30696]: (98)Address already in use: AH00072: make_sock: could not bind t....0:80 Apr 10 06:56:40 <maskediphere> httpd[30696]: no listening sockets available, shutting down Apr 10 06:56:40 <maskediphere> httpd[30696]: AH00015: Unable to open logs Apr 10 06:56:40 <maskediphere> systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE Apr 10 06:56:40 <maskediphere> systemd[1]: Failed to start The Apache HTTP Server. Apr 10 06:56:40 <maskediphere> systemd[1]: Unit httpd.service entered failed state. Apr 10 06:56:40 <maskediphere> systemd[1]: httpd.service failed.
如何复制:使用 ssl.conf 代码(下面链接),运行命令“ sudo systemctl restart httpd
”。
此命令的输出: Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
期望的行为:Apache 服务器应该重新启动,但是尽管 Apache 服务器(httpd 服务)实际上正在机器上运行,但服务器并没有重新启动。
到目前为止我已经尝试了很多方法,包括:
- 确保我的证书被命名为 .pem 文件
- 相同的 .pem 文件引用位于 /etc/httpd/conf.d/ 目录中的 ssl.conf 文件中
- 注释掉 SSLCertificateKeyFile
资源:
- ssl.conf 文件代码
- 每个端口上可用的正在运行的服务列表:每个端口上可用的正在运行的服务列表
答案1
我解决了这个问题,对于遇到类似问题的人,请尝试以下方法:
在终端中输入
lsof -i :80
- 这将列出给定端口号上所有正在运行的进程 ID(您可以将 80 替换为任何端口号。在我的情况下,我输入了 80,因为我的 Apache 服务在此端口上运行)。看到正在运行的进程 ID 列表后,找到 Apache(httpd)的 ID。httpd 下可能有多个进程 ID,在这种情况下,复制/记住列表顶部的进程 ID。输入
sudo kill -9 process_id
- 将 process_id 替换为您在步骤 1 中记下的 ID。这将终止/停止 Apache 服务。输入
sudo systemctl start httpd
- 这将再次启动 Apache/httpd 服务器
请小心并注意:如果您正在运行具有实时用户的服务器,如果步骤 3 对您不起作用并且步骤 2 已经终止服务,他们可能会受到影响。就我而言,一切都很好,但似乎命令sudo systemctl restart httpd
不起作用,直到我手动终止正在运行的进程 ID 并再次启动 Apache。