This (port conflict) was handled in the script a while ago. Needing to proxy is a whole other deal there are howto topics on that.
This is the guide that the script links to but I don’t want to tear down my production website just to install discourse.
This guide assumes you already have Discourse working - if you don't, it may be hard to tell whether or not the configuration is working.
既然这个话题很有帮助,我就补充一下,尽管它已经三年了。我今天遇到了端口被占用的问题,对发生的事情感到有些困惑。我只是按顺序列出事件,以防其他人也遇到类似情况。
背景:运行 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……
根据您的描述,判断下一次升级是否会引发问题的最佳方法是连续升级三天——这应该足够简单,完全可以操作!
一般来说,如果您距离上次 Discourse 升级已超过一年,通常需要使用 ./launcher rebuild app。当然,我们建议您更频繁地访问 /admin/upgrade 页面 ![]()
如果你的 app.yml 调用了其他内容,你需要
./launcher stop irrelevant
或者重命名它并重新构建该部分。
除了将 Docker 作为安装先决条件外,Discourse 不会在容器外部安装任何内容。
Apache2 很可能是在上次重启后安装的,在你重启机器之前无法占用该端口。请搜索你的 bash 历史记录,检查手动安装了哪些软件包。
感谢大家的建议。
我确实使用了 rebuild 应用。如果 Discourse 没有安装任何额外内容(我原本以为 nginx 和 Apache2 会因为某些新功能而默认安装)……嗯。我肯定没有自己安装过 Apache2。
啊。原来如此。我在 DigitalOcean 的 Ubuntu 上专门为 Discourse 运行了多年,今年一月我安装了 Subversion,当时似乎没有重启。该安装过程似乎添加了 Apache,不过禁用它后,我仍然拥有所需的功能。
我想是我已经不太习惯安装程序会附带多余内容了(是的,我确定 Apache 是某个功能所必需的)。这种情况更常发生在 Windows 或 Android 上 :D。
抱歉带来麻烦。不过,这确实是一个真实的使用场景,作为开发者,阅读这些总是很有帮助的。