在没有 Docker 的情况下部署 Discourse

我的解决方案的一些细节:

  1. Nginx 配置:
    在反向代理 (haproxy) 之后,您需要将 /var/discourse/config/nginx-config-sample.conf 复制到 /etc/nginx/sites-enabled/discourse.conf 或类似的目录,然后替换 listen <yourreverseproxyport>(如果需要),并将 server_name 中的 _ 替换为主机名(subdmain.example.com)。其他任何内容都不应更改。
  2. 页面未显示(“哎呀”消息)和电子邮件管理员注册不工作:
    Magick 是导致首次启动后管理员注册页面未显示页面的原因。我遵循了日志中指示的文件:/var/www/discourse/lib/letter_avatar.rb:112,在第 112 行,有两个 magick 命令确实没有响应。convert 响应了,所以我将该行中的 magick 替换为 convert。在进行这些更正后,又记录了一个错误。尝试使用文件中的给定命令进行相同的过程,magick 命令不起作用,并且 convert 失败。注意:magick --version 是 7.x,而 convert --version 是 6.x。原因是:我首先使用 apt 安装了 imagemagick,然后从源代码安装了 magick 7。存在一些冲突,magick 告诉 convert 命令已过时。所以我只用 magick 7 重新运行了我的脚本。这立即解决了问题,我可以看到等待了数天的全新页面,电子邮件也正常工作了!Magick 确实很神奇。
  3. 混合内容问题仍然存在,但网站运行正常。
    注意:在 puma.rb 中,行 bind ENV.fetch("PUMA_BIND", "tcp://#{ENV['PUMA_BIND_ALL'] ? '' : '127.0.0.1:'}3000") 必须像这样(修正了第一个帖子。)
  4. 编辑“3.”,关于强制 discourse 使用 https:我不知道确切原因,但我的浏览器不再显示“混合内容”警告(也许是因为缓存更新),所以现在一切都很好。我只需要完成我的脚本。
3 个赞

已确认可以正常工作!!!
ImageMagick v7 解决了 Ooops 问题!
在我测试过的范围内,它完全可以正常工作。
我将测试其余功能并尽快报告。

1 个赞

我为测试所做的是在运行 puma 时设置环境变量 PUMA_BIND

关于 ImageMagick,不知何故 Discourse 在 webUI 中执行图像转换失败,当我上传大图片时,它很友好地拒绝转换……我仍在调试这个问题。

调试有进展吗?我这边正在处理 magick。
对于一些大约 50kb 的图片,浏览器会弹出一个窗口显示:
timeout -k 40.0 20 magick gif:/tmp/RackMultipart20250927-23598-xrrp6e.gif -auto-orient -background white -interlace none -flatten -debug all -quality 90 jpg:/tmp/image20250927-23598-9ujq3d.jpg 并且没有图片加载。
如果图片尺寸更大,则不会弹出窗口,但加载轮会无限循环转动,没有任何结果。/var/www/discourse/log 中没有记录任何错误。

对我来说也是同样的问题 :joy::sob:

我唯一能让它运行的方法是使用 brew 仓库中的 imagemagick。

但是,当图片超过 3MB 时它就会失败……也许我设置了一个非常严格的策略配置。

试试看!!!

我正在测试 docker 安装,但我认为或者说我非常愚蠢地将 nginx、unicorn、redis、postgresql 和其他东西部署在同一个容器中……这完全没有意义。而且没有针对大型部署的基础设施文档……我在 IT 行业工作了 20 多年,我只看到使用这种基础设施在不久的将来会出现问题。

更不用说“Docker 空间吞噬者”(就像 Dormammu 一样)了 :rofl::rofl:

此问题已通过以下解决方案解决:

调试 1:bundle db:create 输出,首次启动时也在日志中:


未知 OID 21096:无法识别“embeddings”的类型。它将被视为字符串。
pngquant 工作进程:“pngquant”未找到;请提供正确的二进制文件或禁用此工作进程(通过参数 --no-pngquant 或选项 :pngquant => false
oxipng 工作进程:“oxipng”未找到;请提供正确的二进制文件或禁用此工作进程(通过参数 --no-oxipng 或选项 :oxipng => false
jhead 工作进程:“jhead”未找到,“jpegtran”未找到;请提供正确的二进制文件或禁用此工作进程(通过参数 --no-jhead 或选项 :jhead => false
jpegoptim 工作进程:“jpegoptim”未找到;请提供正确的二进制文件或禁用此工作进程(通过参数 --no-jpegoptim 或选项 :jpegoptim => false

调试 2:某些 magick 命令处理文件时输出:

此图像格式没有解码委托
此最后的问题在此处提及:here

解决方案在此处:here(安装带有格式插件的 magick):

t=$(mktemp) && \
wget 'https://dist.1-2.dev/imei.sh' -qO "$t" && \
bash "$t" && \
rm "$t"

在此之后,我的上传大小可以达到 518KB。之前不行。这仅适用于图像。所有其他文档、音频、视频上传都可以正常工作。

剩余问题的临时解决方案:
我查看了管理员设置、discourse.conf、nginx/sites-enables/discourse.conf、git 文件夹。最后在 AdminPanel/Parameters/Files 中,我禁用了“Composer media optimization image enabled”,然后一切正常。我可以上传任何图像。

是的,IMEI 几乎和使用 brew 的解决方案一样,但我确信它不会占用大约 2GB 的磁盘空间 :rofl::rofl::sob::sob::sob::face_with_symbols_on_mouth::face_with_symbols_on_mouth::face_with_symbols_on_mouth:

我将检查您关于上传最大文件大小的解决方案。

我也在为“免费”发送电子邮件而苦苦寻找解决方案(我处于早期阶段,不想签约 mailtrap/mailgun/etc…)

为什么不安装邮件服务器?我有一个自己的,并且编写了安装脚本。如果你有兴趣,请告诉我。

好的!请私信我说明指示或 git 仓库!:grinning_face_with_smiling_eyes:

我多年前就不再使用自托管邮件服务器了……

执行 rake assets:precompile 时,提示 No such file or directory - brotli,请使用包管理器安装它。

2 个赞

我发现它抛出了这个错误:

bundler: failed to load command: puma (/home/mry/.rbenv/versions/3.4.6/bin/puma)
/home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/cluster.rb:472:in `Puma::Cluster#run': undefined method `wait_readable' for nil (NoMethodError)

            if read.wait_readable([0, @next_check - Time.now].max)
                   ^^^^^^^^^^^^^^
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/launcher.rb:202:in `Puma::Launcher#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/cli.rb:73:in `Puma::CLI#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/bin/puma:10:in `<top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/bin/puma:25:in `Kernel#load'
        from /home/mry/.rbenv/versions/3.4.6/bin/puma:25:in `<top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `Kernel.load'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `Bundler::CLI::Exec#kernel_load'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:23:in `Bundler::CLI::Exec#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:452:in `Bundler::CLI#exec'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `Bundler::Thor::Command#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `Bundler::Thor::Invocation#invoke_command'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor.rb:538:in `Bundler::Thor.dispatch'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:35:in `Bundler::CLI.dispatch'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `Bundler::Thor::Base::ClassMethods#start'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:29:in `Bundler::CLI.start'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/exe/bundle:28:in `block in <top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/friendly_errors.rb:117:in `Bundler.with_friendly_errors'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/exe/bundle:20:in `<top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/bin/bundle:25:in `Kernel#load'
        from /home/mry/.rbenv/versions/3.4.6/bin/bundle:25:in `<main>'

然后 Puma 会重启。我该怎么做才能阻止这种情况发生?

编辑:这似乎是 Puma 自 Ruby 3.4.0 以来的一个问题 (Puma 的问题)。通过禁用 YJIT 解决了。

然后使用 3.3.7。这是我使用的版本。

我太懒了,不想重新下载 gem,只需禁用 YJIT 并继续使用 3.4.6。