既然这个话题很有帮助,我就补充一下,尽管它已经三年了。我今天遇到了端口被占用的问题,对发生的事情感到有些困惑。我只是按顺序列出事件,以防其他人也遇到类似情况。
背景:运行 Ubuntu 16.04.3 LTS(太害怕升级到 18.04),以及 Discourse 2.3.x(不确定具体版本,原因稍后说明)。
对 app.yml 做了一个无关紧要的修改,然后重新构建了应用。
另外注意到 Ubuntu 提示需要重启(我没查看具体原因),于是也重启了 Ubuntu。
结果就出现了端口错误的问题。
我发现 Apache2 突然在运行,于是禁用了它:
root@Discourse:~# sudo update-rc.d apache2 disable
insserv: 警告:脚本 apache2' 的当前启动运行级别(空)覆盖了 LSB 默认值(2 3 4 5)。 insserv: 警告:脚本 apache2’ 的当前停止运行级别(0 1 2 3 4 5 6)覆盖了 LSB 默认值(0 1 6)。
最终论坛恢复了,因为端口现在已释放。
但我无法理解的是,为什么会发生这种情况?Apache2 是从哪里来的?
我本应该在重启后立即测试论坛,真糟糕。现在我无法确定是 Discourse 升级还是 Ubuntu 重启导致了这个问题(我或许能在某些日志中找到答案,但我对 Linux 已经不太熟练了)。甚至还在论坛上查找过,看看 Discourse 2.5 如今是否会自动安装 Apache2。
好消息是,Discourse 的升级确实 overdue 了。只是我最近非常不愿意升级,因为过去五年里,几乎每隔一次升级就会遇到类似问题。不过,我依然很喜欢 Discourse……