tknospdr
(David Muszynski)
1
我已经在两个不同的虚拟机上安装了Discourse。
我正在使用官方的安装说明。
一个在Mac Pro上的VMWare Fusion实例中运行Debian 12,另一个是在TrueNAS下运行的虚拟机中的Ubuntu 24。
它们都在我本地网络上的专用服务器上,网络桥接,并且拥有唯一可访问的IP地址。
TN服务器托管多个其他docker容器化的应用程序,它们都在LAN和互联网中正常工作和访问,Mac Pro本机托管一个wiki。
在两个环境中,启动功能都完成了,但是我没有得到一个可以工作的站点。浏览器中只显示“服务器无响应”。
根据docker ps,容器“app”已经启动并运行,监听端口80和443,ufw报告这些端口已被允许。
一段时间之前,Debian站点显示的是nginx的默认欢迎页面,但现在那个页面也不再响应了。
我不是开发人员或网页魔术师,所以不知道如何排查问题,我曾请Grok帮忙,但到目前为止都没有效果。
非常感谢任何提供的帮助。
pfaffman
(Jay Pfaffman)
2
1 个赞
tknospdr
(David Muszynski)
3
我拥有一个公开的静态IP地址和一个指向该地址的域名。
我通常使用通配符A记录将任何主机指向该IP,但在排查时我遇到一篇文章说Discourse可能不与Cloudflare DNS中的代理地址配合良好,所以我创建了一个专用的A记录并关闭了该记录的代理。
pfaffman
(Jay Pfaffman)
4
您运行了 discourse-setup 吗?它通过了连接测试吗?
tknospdr
(David Muszynski)
5
我使用“bootstrap function”这个术语正确吗?
只是想确认我们讨论的是同一件事。
./discourse-setup 就是 bootstrap,对吧?
所以如果我说它 bootstrap,容器正在运行,那么在设置开始时进行的连接测试也就通过了。
这些都有道理吗?
pfaffman
(Jay Pfaffman)
6
[引用=“tknospdr, 第5条帖子, 主题: 364284”]
./discourse-setup 是引导程序,对吧?
[/引用]
嗯,可以这么说。它创建一个 app.yml,然后运行 ./launcher bootstrap app。
如果你多次运行它而 DNS 没有正确工作,那么你可能达到了 Let’s Encrypt 的请求频率限制。解决的简单办法是等待一周或使用不同的域名。
[引用=“tknospdr, 第3条帖子, 主题: 364284”]
我创建了一个专用的 A 记录并关闭了那个的代理。
[/引用]
而且那个机器上没有别的东西在运行?
当你运行 discourse-setup 时,它没有抱怨无法连接到自己?
tknospdr
(David Muszynski)
7
[引用自 “pfaffman,第6帖,主题: 364284”]
如果你多次运行它而DNS没有正常工作,那么你已经达到了Let’s Encrypt的速率限制。简单的解决方案是等待一周,或者使用不同的域名。
[/引用]
我每台虚拟机只运行过一次,而且每台都用了不同的主机名。
[引用自 “pfaffman,第6帖,主题: 364284”]
那台机器上没有运行其他东西吗?
[/引用]
全新的虚拟机,什么都没有运行。在实际硬件上还有其他程序在运行。但它们的内部IP地址与主机不同。
[引用自 “pfaffman,第6帖,主题: 364284”]
当你运行 discourse-setup 时,它没有抱怨无法连接到自己吗?
[/引用]
没有,确实如此。
tknospdr
(David Muszynski)
8
以下是我在安装输出中发现的错误,似乎都不是致命的问题:
690:M 2025年4月30日 22:05:22.859 # 警告:无法创建服务器TCP监听套接字 *:6379:绑定失败:地址已在使用中
690:M 2025年4月30日 22:05:22.859 # 监听端口6379(TCP)失败,中止。
109:M 2025年4月30日 21:59:42.411 # 警告:必须启用内存超额提交!否则,在低内存条件下,后台保存或复制可能会失败...
2025-04-30 21:59:41.125 UTC [60] postgres@postgres 错误:数据库 "discourse" 已存在
2025-04-30 21:59:41.274 UTC [63] postgres@discourse 错误:角色 "discourse" 已存在
警告:Gem::Specification.reset过程中未解决或模糊的规格:
stringio (>= 0)
该宝石的可用/已安装版本:
- 3.1.7
- 3.1.5
- 3.1.1
警告:清除未解决的规格。尝试运行 'gem cleanup <gem>'
如果这引起了问题,请报告错误。
Embroider的未来版本中,设置 'staticAddonTrees' 将默认为 true 且不能关闭。为了做好准备,您应在Embroid的配置中设置 'staticAddonTrees: true'
'staticAddonTestSupportTrees' 也将在下一版本中默认设置为 true,不能关闭。请在您的Embroid配置中相应设置。
Node.js的堆大小限制低于2048MB。请设置 --max-old-space-size=2048 和 CHEAP_SOURCE_MAPS=1
-e DISCOURSE_SMTP_DOMAIN=discourse.example.com
[BABEL] 提示:代码生成器已对 /var/www/discourse/app/assets/javascripts/discourse/ember/ember-template-compiler.js 进行了去优化样式处理,因为其文件超过了500KB的最大限制。
[BABEL] 提示:代码生成器已对 /var/www/discourse/app/assets/javascripts/discourse/ember/ember.js 进行了去优化样式处理,因为其文件超过了500KB的最大限制。
你的虚拟机的规格是什么?也就是说,为它们分配了多少个vCPU/内存?
将其增加到 4 GB RAM 有帮助吗?我认为内存需求可能已经增加了。
1 个赞
tknospdr
(David Muszynski)
12
我之前没有考虑到端口80已经被占用,而且我只有一个外部IP,虽然在设置过程中域名检测通过了,但我不得不修改主机端的端口才能让事情正常运行。
我在内部使用NPM。
让事情正常工作的步骤:
- 将主机端口改为7080用于HTTP
- 由于我要通过我的代理管理器传递流量,我简化了操作,禁用了LE脚本
- 更新了应用程序
- 在反向代理中将’ext IP:80’传递为’int IP:7080’,然后容器反转了端口……接着它们跳了惠基舞,然后转过身来了。
到目前为止,一切似乎都在正常工作。
2 个赞