我们内部的 Discourse 系统一直愉快地运行着同一个旧版本,但既然我们终于要淘汰 IE9 了,升级已是刻不容缓。
我可以确认,本指南对于最新版本的 Discourse 依然适用。即使使用的是 RHEL 8 而非 RHEL 7 也没问题:slight_smile
在实验过程中,我找到了一种方法,让 discourse-prometheus 和 discourse-calendar 插件即使在离线环境下也能运行,即便存在额外的依赖项。诀窍是从构建服务器的插件目录以及 /var/www/discourse/vendor/bundle/ruby 中提取 Ruby gems:
docker run -it -v ~/local/rubygems.org:/local-rubygems local_discourse/app /bin/bash -c "cp -rv /var/www/discourse/vendor/bundle/ruby /local-rubygems"
docker run -it -v ~/local/rubygems.org/plugin-gems/discourse-calendar:/local-rubygems local_discourse/app /bin/bash -c "cp -rv /var/www/discourse/plugins/discourse-calendar/gems /local-rubygems"
docker run -it -v ~/local/rubygems.org/plugin-gems/discourse-prometheus:/local-rubygems local_discourse/app /bin/bash -c "cp -rv /var/www/discourse/plugins/discourse-prometheus/gems /local-rubygems"
然后在 /templates/web.template.yml 中:
- exec:
cd: $home
hook: bundle_exec
cmd:
# 复制本地 Ruby 缓存
- cp -rv /local-rubygems.org/ruby/* $home/vendor/bundle/ruby/
- cp -rv /local-rubygems.org/plugin-gems/* $home/plugins/
- su discourse -c 'bundle install --local --deployment --retry 3 --jobs 4 --verbose --without test development'
顺便提一下,关于 Active Directory IIS SSO 的主题似乎在某处丢失了,但代码仍然可在 GitHub - laktak/discourse-sso: Single Sign On for Discourse with Active Directory · GitHub 获取,并且仍然适用于现已更名为 DiscourseConnect SSO 的系统。