Hugo_Lol
(Hugo Lol)
1
你好!我已按照指南在 Ubuntu 18.04 虚拟机(使用 VMware Workstation 15 Player)中成功安装了 Discourse。在虚拟机内部访问 http://localhost:3000/ 一切正常,但我无法从 Windows 10 宿主机访问。虚拟机的网络已配置为桥接模式,启动 Rails 服务器时我运行了以下命令:
bundle exec rails server --binding=0.0.0.0
然而,当我从宿主机访问 http://192.168.0.172:3000/ 时,却收到“连接被拒绝”的错误。我尝试在虚拟机内设置一个简单的 Python HTTP 服务器:
python3 -m http.server 3000
结果可以从宿主机成功访问,因此我认为这是 Discourse 特有的问题。我是否遗漏了什么?
提前感谢!
neounix
(Dark Matter)
2
你好 @Hugo_Lol
你可能需要参考一下如何在主机和虚拟机之间设置端口转发,例如:
另一个示例:
或许你可以参考这些示例,了解如何着手解决此问题?
希望这能帮到你。
1 个赞
Hugo_Lol
(Hugo Lol)
3
嗨 @neounix,谢谢你的回复。我已经将 VM 网络配置为桥接模式,并且可以通过一个简单的 Python HTTP 服务器(监听相同端口 3000 和地址 0.0.0.0)从外部访问它,但不知为何 Discourse 服务器却无法工作……
有什么建议吗?
1 个赞
neounix
(Dark Matter)
4
嘿 @Hugo_Lol,
不客气。
我不是 Windows 用户,所以无法提供太多进一步的帮助,抱歉!
我最好的建议是查看 /var/log 中的各种 Discourse 日志文件以寻找线索。
Osama
5
这里的问题是 --binding 选项被完全忽略了。我在本地尝试了你的命令,并在输出中发现了这一行(输出非常嘈杂,所以很容易忽略这一行):
I, [2020-06-08T17:26:55.938086 #21001] INFO -- : listening on addr=127.0.0.1:3000 fd=15
查看我们的 config/unicorn.conf.rb 文件,要让服务器监听 0.0.0.0,你需要设置环境变量 UNICORN_BIND_ALL=1。因此,以下命令应该可以工作:UNICORN_BIND_ALL=1 bundle exec rails server。
或者,你可以使用 bin/unicorn 脚本,它接受 --host 选项,你可以用它来绑定到 0.0.0.0。
9 个赞
Hugo_Lol
(Hugo Lol)
6
这真解决了问题!现在可以正常工作了。非常感谢你们两位。
6 个赞
shell
(Vladimir Penkin)
7
谢谢,这帮我省了不少麻烦。
我在想你是否能更新官方用户指南,将其中无法生效的 bundle exec rails server -b 0.0.0.0 解决方案替换为此方法。
我在互联网上随处可见这种写法,实在无法想象它竟然无法运行。