在 Ubuntu 或 Debian 上安装 Discourse 以进行开发

我个人建议你擦除你的树莓派(除非你有什么想保存的)然后从头开始,或者直接在一张干净的单独SD卡上开始。

看起来你有两个 Discourse 安装——因此可能有第二个 Redis 进程。

1 个赞

rm -rf *?还是太具破坏性了?

现在它有点奏效了。页面加载非常慢,并且因为花费时间太长而导致超时。

E, [2024-11-08T14:57:11.960623 #2213] ERROR -- : worker=0 PID:2323 running too long (65s), sending USR2 to dump thread backtraces                                                                                                            
E, [2024-11-08T14:57:18.033374 #2213] ERROR -- : worker=0 PID:2323 timeout (65s > 60s), killing                                                                                                                                              
E, [2024-11-08T14:57:20.607509 #2213] ERROR -- : reaped #<Process::Status: pid 2323 SIGKILL (signal 9)> worker=0                                                                                                                             
E, [2024-11-08T14:57:20.645299 #2213] ERROR -- : worker=1 PID:2324 running too long (63s), sending USR2 to dump thread backtraces                                                                                                            
E, [2024-11-08T14:57:20.645461 #2213] ERROR -- : worker=1 PID:2324 timeout (63s > 60s), killing                                                                                                                                              
E, [2024-11-08T14:57:20.681291 #2213] ERROR -- : reaped #<Process::Status: pid 2324 SIGKILL (signal 9)> worker=1                                                                                                                             
I, [2024-11-08T14:57:23.676422 #2555]  INFO -- : worker=0 ready                                                                                                                                                                              
I, [2024-11-08T14:57:23.681733 #2556]  INFO -- : worker=1 ready 
1 个赞

您使用的是哪个模型?我不会尝试在低于 Pi 4 的设备上进行此操作。

这肯定会花费一些时间。

一旦 JavaScript 构建完成,再发出另一个浏览器调用。然后它应该可以工作。

我已经(我认为是在 embroider、webpack 和 discourse-plugins 的 apply-patches 之后(大概是这样))。我使用的是 Pi 4。

1 个赞

那些后端工程师简直是独角兽(后端)。他们看起来准备好了。你必须确保前端也已构建。

并且请记住连接到 http://localhost:4200

How will I know when it has finished building?

1 个赞

您会得到类似这样的输出:

[ember-cli] Build successful (41838ms) – Serving on http://localhost:4200/
[ember-cli]
[ember-cli] Slowest Nodes (totalTime >= 5%) | Total (avg)
[ember-cli] -+-
[ember-cli] @embroider/webpack (1) | 23127ms
[ember-cli] Babel: admin (1) | 4067ms
[ember-cli] Funnel (422) | 2826ms (6 ms)

(这些时间是在我的超级PC上测的!)

树莓派 5 (8GB):

[ember-cli] Build successful (148604ms) – Serving on http://localhost:4200/
[ember-cli]
[ember-cli] Slowest Nodes (totalTime >= 5%) | Total (avg)
[ember-cli] -+-
[ember-cli] @embroider/webpack (1) | 83461ms
[ember-cli] @embroider/compat/app (1) | 13488ms
[ember-cli] Babel: discourse-plugins (25) | 9313ms (372 ms)
[ember-cli] Babel: admin (1) | 8695ms
[ember-cli] Funnel (407) | 8557ms (21 ms)

不过,看看我的pi 5内存,它已经占用了4.27GB,仅仅是运行Discourse和一个Chromium标签页!

所以,如果你遇到了严重的交换空间使用(这本身在SD卡上就是个坏主意),到达这一点将非常缓慢。请在另一个终端中使用命令 htop 进行检查。

你可能会发现,在内存少于8GB的pi上运行这个会是一个挑战!

1 个赞

我想我也遇到了这个问题。

我将运行它并回复你。

它显示这个的时候:

最后记录的金额是这个:

然后它就卡住了(现在仍然是)。很可能超过了限制。我关闭了浏览器标签页,但它仍然卡住。甚至无法 CTRL+C。

是的,恐怕你的树莓派需要更多内存。一旦内存达到上限,它就会冻结。

一种选择是添加一个 NVMe 驱动器并增加交换空间。

然后你可以安全地增加交换空间。

我认为唯一的其他解决方案是为这项任务提供一个 8GB 的树莓派 5,并将你现在的 4GB 用于其他用途。

1 个赞

您好

当我输入以下命令时,没有任何反应:

bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/main/linux)
图片显示了一个终端窗口,其中包含一个用于在 Linux 系统上安装 Rails 的脚本命令。 (由 AI 添加说明)

我是否遗漏了什么?

也许你没有安装 wget

用以下命令检查是否安装:

which wget

如果没有安装,你可以尝试用以下命令安装:

sudo apt-get install wget -y
3 个赞

顺便说一句,我这周添加了一个 NWMe 驱动器,我的 Pi 5 运行得很好。我还增加了交换空间(这与普通 Linux 系统的过程略有不同)

最值得注意的是,这需要完全重新安装 Discourse 的开发安装。

我发现遵循 OP 中的说明,一切都进行得很顺利,没有出现任何问题,所以看起来脚本和 Pi 的兼容性现在处于一个非常好的状态,感谢所有人的贡献!

6 个赞

大家好,

我已成功在我的本地 Ubuntu 24.04 LTS 服务器上为开发设置了 Discourse。指南有效,最后两个命令均无错误运行。

但是,我该如何通过网络访问它?Ubuntu 服务器没有图形界面,因此无法使用 localhost:4200
并且 ServerIP:4200 显示无法访问。

有什么建议可以启用局域网内其他设备访问吗?

谢谢!

2 个赞

如果您使用 bin/rails -b 0.0.0.0 启动 rails,它应该可以供您网络上的其他主机访问。然后您还需要在新标签页中单独启动 ember,使用 bin/ember-cli

然后访问 ServerIP:4200 应该可以工作(当然,除非您遇到防火墙问题)。

3 个赞

我在 WLS2 上尝试了 Ubuntu 24 的安装。[^1]

我遇到的问题如下:

  • E: 无法定位软件包 libltdl7-dev

  • 您的 Ruby 版本是 3.2.1,但您的 Gemfile 指定的是 ~> 3.3
    随着 Ruby 版本最近升级到 > 3.3,脚本也需要更新:install-rails/linux at main · discourse/install-rails · GitHub

    • 我的操作:
      rbenv install 3.3.7
      rbenv global 3.3.7
      rbenv rehash
  • ERROR unsupported engine for /home/arkshine/discourse: wanted: {"pnpm":"^9"} (current: {"node":"v18.20.6","pnpm":"10.5.2"})

    • 需要 sudosudo pnpm install [^2]
  • ERROR Failed to switch pnpm to v9.15.5. Looks like pnpm CLI is missing at "~/.local/share/pnpm/.tools/pnpm/9.15.5/bin" or is incorrect

    • 运行 pnpm install 时。我通过以下方式解决了:
      • npm install -g corepack@latest
      • corepack use pnpm@latest-9

作为非 root 用户,代码中缺少 sudo 导致最终无法运行。我不知道是否有更智能的方法,但我没有找到。我没有在 Ubuntu 22 上遇到这些问题。
作为 root 用户,我设法使其正常工作。

顺便说一句,还有一个替代方案:Developing Discourse using a Dev Container

[^1]:由于 Ruby 版本升级现在需要 v3.3+,我无法通过 Ubuntu 22 修复我的安装。
[^2]:如果您以非 root 用户身份安装。

2 个赞

关于 Ubuntu 22,我终于搞定了。我真是个白痴。 :baymax_yes:

我最初的问题是 rbenv 只包含 3.3.0-dev 版本。
我会收到类似这样的错误:

(base) arkshine@HOME:~/discourse$ rake db:migrate
Sorry, you can't use byebug without Readline. To solve this, you need to
rebuild Ruby with Readline support. If using Ubuntu, try sudo apt-get     install libreadline-dev and then reinstall your Ruby.
rake aborted!
LoadError: cannot load such file -- readline (LoadError)
/home/arkshine/discourse/config/application.rb:44:in '<top (required)>'
internal:/home/arkshine/.rbenv/versions/3.3.0-dev/lib/ruby/3.5.0+0/rubygems/core_ext/kernel_require.rb:136:in 'Kernel#require'
internal:/home/arkshine/.rbenv/versions/3.3.0-dev/lib/ruby/3.5.0+0/rubygems/core_ext/kernel_require.rb:136:in 'Kernel#require'
/home/arkshine/discourse/Rakefile:7:in '<top (required)>'
(See full trace by running task with --trace)

解决方案是升级 rbenv

git -C ~/.rbenv/plugins/ruby-build pull

然后你可以安装一个更新更稳定版本:

(base) arkshine@HOME:~/discourse$ rbenv install --list
3.1.6
3.2.7
3.3.7
3.4.2
rbenv install 3.3.7
rbenv global 3.3.7
rbenv rehash

现在,它又可以工作了! :party_popper:

2 个赞

我刚尝试在 Ubuntu 24(在我的 Mac OS Macbook 上的 VMWare 中运行的 ARM 版本)上安装 discourse。我遇到了一些问题。

更改 #1
ImageMagick 安装失败。在 ImageMagick 本身的安装脚本中,它依赖于 libltld7-dev。这需要改为 libltld-dev

更改 #2
默认安装的是 Ruby 3.2.1。这不适用于 pnmp v9.x。我将其改为 3.3.7,这似乎可行。
旧:

ruby_version="3.2.1"

新:

ruby_version="3.3.7"

更改 #3
Node 18 的安装出现了一些错误。在安装脚本中,我将其更改为 Node 20,这似乎可行。
旧:

curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -

新:

curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -

感谢上面 @Arkshine 的评论,这很有帮助。

6 个赞

根据您的更新,它仍然适用于当前版本。谢谢!