【发布时间】:2021-12-28 21:27:28
【问题描述】:
上周我能够在 MacOS Big Sur 11.6 (Mackbook Pro M1) 上使用 MAMP Pro 为多个虚拟主机运行 nginx Web 服务器。今天,在本地使用 certbot 更新支持本地 dev https 开发的本地 LetsEncrypt SSL 证书后,我无法在任何虚拟主机上启动 nginx。
我在 MAMP Pro 中收到一条警告,上面写着“您将 nginx 配置为使用端口 80 和 443,但其中至少一个似乎正在使用中。”所以我检查了 MAMP 是否仍然配置为使用 nginx 端口 80。然后我使用活动监视器尝试杀死所有使用端口 80 的 httpd 进程。其中两个,由 root 和 _www 拥有,拒绝死亡。所以我用 kill -9 和他们各自的 PID。这让他们死了一会儿,但他们又回来了。之后,我再次尝试在 80 端口重新启动 nginx。它无法启动,并显示消息“Nginx 无法启动。请查看日志文件以获取更多信息。”
显示的日志文件
2021/12/28 16:04:22 [emerg] 93920#0: bind() to 0.0.0.0:80 failed (48: Address already in use)
2021/12/28 16:04:22 [emerg] 93920#0: bind() to 0.0.0.0:80 failed (48: Address already in use)
2021/12/28 16:04:22 [emerg] 93920#0: bind() to 0.0.0.0:80 failed (48: Address already in use)
2021/12/28 16:04:22 [emerg] 93920#0: bind() to 0.0.0.0:80 failed (48: Address already in use)
2021/12/28 16:04:22 [emerg] 93920#0: bind() to 0.0.0.0:80 failed (48: Address already in use)
2021/12/28 16:04:22 [emerg] 93920#0: still could not bind()
如何完全杀死 root 和 _www 用户进程?更重要的是,为什么会这样?是否与更新的 LetsEncrypt SSL 有关?
【问题讨论】:
-
您是否也在运行 Apache (MAMP) 或 Mac OS 版本。似乎必须有另一个进程使用该端口?
-
这在 Mac 上是行不通的。几乎听起来 Certbot 运行它自己的小服务器来获取证书。就像我说的,我是 MAMP pro 的忠实用户,但我现在使用 Docker。不确定它如何与 Certbot 一起使用。你也可以看看这个:stackoverflow.com/questions/4421633/… 将有助于确定竞争该端口的内容。
-
奇怪的问题。如果它是一个 httpd 进程,您是否尝试过:sudo killall httpd,只看到它们重新启动?您是否也在该系统上使用 HomeBrew。如果您有某种联系方式,我愿意与您在线下合作。我认为我的个人资料有我的 GitHub 链接。我想我还有 MAMP Pro 并且可以重新安装它。我正在运行卡特琳娜。实际上有 2 个 i-Mac,所以也许可以安装在我的旧系统上。
-
您也可以尝试 MAMP 支持:appsolute.zendesk.com/hc/en-us/requests/new,但您可能需要注册一个帐户。如果您有 M1 Mac 和 Big Sur,我可以理解为什么可能存在某种“错误”。一些供应商在将他们的产品迁移到 M1 平台时遇到了问题。
-
我实际上用 SO 链接提交了一张票!也许他们会参加。