使用已安装的 Apache2 安装 Discourse

嗨!
我在一台安装了 Apache 的 Ubuntu 18.04 服务器上运行。我想在不同端口上安装 Discourse,然后通过 Apache 的反向代理使其可通过 URL 访问。我尝试创建了一个 app.yml 文件并修改了其中的设置,然后运行了:./launcher rebuild app。整个过程一切顺利,直到最后出现“失败”错误,具体如下:

FAILED

Pups::ExecError: cd /var/www/discourse && su discourse -c ‘bundle exec rake themes:update assets:precompile’ 失败,返回状态为 #<Process::Status: pid 3801 exit 134>
失败位置:/pups/lib/pups/exec_command.rb:112:in `spawn’
exec 失败,参数为 {“cd”=>“$home”, “hook”=>“assets_precompile”, “cmd”=>[“su discourse -c ‘bundle exec rake themes:update assets:precompile’”]}
2beda643ff51279f145c96cdede83a1d6b65f67e00225be74100c8fb9fe3f790
** 引导失败 ** 请向上滚动查看之前的错误信息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。

我尝试使用 discourse-doctor,但它没有提供任何有用信息。有人知道如何解决这个问题吗?另外,我使用 Apache 是因为我觉得它更容易使用,并且我对 Apache 更有经验。因此,切换到 Nginx 不是一个选项。
以下是失败部分之前的部分日志:

MaxMind IP 数据库更新需要许可证
请将 DISCOURSE_MAXMIND_LICENSE_KEY 设置为在 https://www.maxmind.com 生成的许可证密钥
MaxMind IP 数据库更新需要许可证
请将 DISCOURSE_MAXMIND_LICENSE_KEY 设置为在 https://www.maxmind.com 生成的许可证密钥
98765.375844045 正在压缩:vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js
terser ‘/var/www/discourse/public/assets/_vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js’ -m -c -o ‘/var/www/discourse/public/assets/vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js’ --source-map “base=‘/var/www/discourse/public/assets’,root=‘/assets’,url=‘/assets/vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js.map’”
<— 最后几次垃圾回收 —

[3798:0x4872980] 2679 ms: Scavenge 108.1 (126.5) → 97.8 (129.8) MB, 9.0 / 0.0 ms (平均 mu = 1.000, 当前 mu = 1.000) 分配失败
[3798:0x4872980] 2823 ms: Scavenge 111.4 (129.8) → 101.3 (132.8) MB, 8.4 / 0.0 ms (平均 mu = 1.000, 当前 mu = 1.000) 分配失败
[3798:0x4872980] 2964 ms: Scavenge 114.8 (133.0) → 104.8 (135.3) MB, 32.7 / 0.0 ms (平均 mu = 1.000, 当前 mu = 1.000) 分配失败

<— JS 堆栈跟踪 —>

致命错误:NewSpace::Rebalance 分配失败 - JavaScript 堆内存不足
1: 0xa89e60 node::Abort() [node]
2: 0x9ade29 node::FatalError(char const*, char const*) [node]
3: 0xc7583e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
4: 0xc75bb7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
5: 0xe3f6d5 [node]
6: 0xe7ec67 [node]
7: 0xe90b11 v8::internal::MarkCompactCollector::CollectGarbage() [node]
8: 0xe4c9d8 v8::internal::Heap::MarkCompact() [node]
9: 0xe4e368 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
10: 0xe5190c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
11: 0xe157da v8::internal::factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node]
12: 0x116d5e8 v8::internal::Runtime_AllocateInOldGeneration(int, unsigned long*, v8::internal::Isolate*) [node]
13: 0x15045f9 [node]
中止(核心转储)
rake 中止!
Errno::ENOENT: 没有那个文件或目录 @ rb_file_s_size - /var/www/discourse/public/assets/vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js
/var/www/discourse/lib/tasks/assets.rake:293:in size' /var/www/discourse/lib/tasks/assets.rake:293:in block (4 levels) in ’
/var/www/discourse/lib/tasks/assets.rake:182:in block in concurrent?' /var/www/discourse/lib/tasks/assets.rake:284:in block (3 levels) in ’
/var/www/discourse/lib/tasks/assets.rake:273:in each' /var/www/discourse/lib/tasks/assets.rake:273:in block (2 levels) in ’
/var/www/discourse/lib/tasks/assets.rake:182:in concurrent?' /var/www/discourse/lib/tasks/assets.rake:270:in block in ’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in <top (required)>' /usr/local/bin/bundle:23:in load’
/usr/local/bin/bundle:23:in `’
任务:TOP => assets:precompile
(通过运行任务并添加 --trace 参数查看完整跟踪)
I, [2021-07-21T16:25:26.467914 #1] INFO – : 正在下载 MaxMindDB…
正在压缩 JavaScript 并生成源映射

I, [2021-07-21T16:25:26.469702 #1] INFO – : 正在终止异步进程
I, [2021-07-21T16:25:26.469947 #1] INFO – : 向 HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 56 发送 INT 信号
I, [2021-07-21T16:25:26.470157 #1] INFO – : 向 exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 174 发送 TERM 信号
2021-07-21 16:25:26.470 UTC [56] LOG: 收到快速关闭请求
174:signal-handler (1626884726) 收到 SIGTERM 信号,计划关闭…
2021-07-21 16:25:26.473 UTC [56] LOG: 中止任何活动事务
174:M 21 Jul 2021 16:25:26.473 # 用户请求关闭…
174:M 21 Jul 2021 16:25:26.474 * 在退出前保存最终的 RDB 快照。
2021-07-21 16:25:26.479 UTC [56] LOG: 后台工作进程 “logical replication launcher” (PID 65) 以退出代码 1 退出
174:M 21 Jul 2021 16:25:26.480 * 数据库已保存到磁盘
2021-07-21 16:25:26.480 UTC [60] LOG: 正在关闭
174:M 21 Jul 2021 16:25:26.480 # Redis 现在准备退出,再见…
2021-07-21 16:25:26.515 UTC [56] LOG: 数据库系统已关闭

谢谢,
Kian

你能

吗?我们需要更早的日志行才能提供有意义的帮助。

刚附上了,抱歉 :slight_smile:

您的服务器内存不足以安装 Discourse。

请问您的内存和交换空间容量是多少?

它拥有 8GB 内存和 10GB 交换空间。从情况来看,我的系统并未使用交换空间。

当前应用程序是否占用了所有可用内存,且 swappiness 配置为永不触发?

由于我没有看到其他相关报告,我认为问题出在您的服务器上。

1 个赞

你好!
我有 8GB 内存和 10GB 交换空间。我正在运行 ./launcher rebuild app,此时 RAM 占用为 3.4GB,交换空间未使用。我使用 htop 查看,交换空间显示为 OK/10.00G。不确定这是否表示交换空间正在正常工作。

在 htop 中,swap 显示为 OK/10.00G。不确定这是什么意思。另外,在运行 ./launcher rebuild app 时,RAM 占用大约在 3.4G 左右。

我想这已经成功了。我用 htop 通过 sigterm 关闭了 Clamd。结尾处有一个 Docker ID,所以我猜已经生效了。

编辑:看起来运行正常。我通过 IP 和端口加载了它,显示一切正常!只需要设置反向代理就大功告成了。感谢 @Falco@pfaffman 的帮助 :slight_smile:

2 个赞

另外,我想在 Discourse 上禁用 SSL,这样就不需要指定端口了。我能否在 Discourse 上禁用 SSL,而在反向代理上启用它,并将证书保存在我的机器上?

是的,您只需删除 app.yml 文件中的前几行,即包含 sslletsencrypt 的那两行。

如果我使用带有 SSL 的 Apache 反向代理,该怎么做?我是否也可以删除 app.yml 中的 443:443 这一行?

是的。通常,在配置反向代理时,您希望将服务运行在 Unix 套接字上。为此,您可以在 app.yml 的模板列表中添加以下行:

  - "templates/web.socketed.template.yml" 

套接字将创建在 /var/discourse/shared/standalone/nginx.http.sock

1 个赞

我的反向代理 .conf 文件会是什么样子?还是说你还不太确定?

虽然社区成员提供了一些示例,例如 Configure Apache proxy with Let's Encrypt Sam 的警告:

1 个赞

我以前当过 Apache 代理,所以深知其中的压力 :smiley:

1 个赞

你好!
只是想确认一下,这样设置邮件是否正确?因为我收不到任何邮件。

已渲染 layouts/email_template.html.erb(耗时:0.4ms | 分配:30)
已发送邮件 2d4e2472-28bc-4eba-a9d6-4ca666feb9d1@forum.domain.com(6.7ms)
作业异常:到达文件末尾

邮件服务器是 mail.domain.com 而不是 forum.domain.com,还是说这里本就该是 forum.domain.com

如果您在 /admin/email 处没有收到测试邮件,那就不对了 :wink:。您可以在 app.yml 中更改 SMTP 设置并修正任何错误。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.