Article ID: 1507, created on Jun 25, 2013, last review on May 10, 2014

  • Applies to:
  • Plesk for Linux/Unix

问题诊断

所有域名停止运行。

当尝试启动 Apache Web 服务器时,在控制台和 error_log 中会显示以下错误:

"(98)Address already in use: make_sock: could not bind to address [::]:443 no listening sockets available, shutting down"

(还有可能是错误与 80 端口有关)

原因

该错误表示一些其它进程已经使用 443 (80) 端口而 Apache 无法与其绑定。

解决方案

首先确定在 Apache 配置中一个端口仅指定了一次“监听” 指令。 查看 httpd.conf 和 conf.d/* 文件找到该指令(在一些操作系统上,需要查看 SUsE  和 /etc/apache2/*)。

 下一步就是找出哪个进程在使用带有以下命令的端口:

/usr/sbin/lsof -i | grep http
httpd 24717 apache 4u IPv6 9672930 TCP *:https (LISTEN)


以上命令显示 "TCP *:https " 端口正被带有 PID 24717 的 "httpd" 进程使用。

查看该文件的内容找到启动进程使用的命令:

cat /proc/24717/cmdline
/usr/sbin/httpd-kgraceful

(24717 是进程的 PID).
  • 如果命令真是 Apache (httpd) 二进制,而 Apache 无法正常停止,那么就会出现该问题。 您需要停止该进程并再次启动 Apache。
  • 如果看到其它程序在使用 443/80 端口,您则需要查出该程序从哪启动以及是什么程序,因为有可能是恶意脚本。 以下是此类脚本隐藏位置的示例:
# ls -l /proc/24717/exe
lrwxrwxrwx 1 apache apache 0 May 13 10:16 /proc/24717/exe -> /tmp/.www/httpd


如果您在服务器上找到了恶意脚本,能够找出来源非常重要。 很抱歉此主题太长,该文章无法覆盖全部内容。

a914db3fdc7a53ddcfd1b2db8f5a1b9c 29d1e90fd304f01e6420fbe60f66f838 56797cefb1efc9130f7c48a7d1db0f0c

Email subscription for changes to this article