Canvas LMS 开源版本升级过程

发布于: 25 October, 2024
分享:

官方指引参考:https://github.com/instructure/canvas-lms/wiki/Upgrading

登录服务器后切换至 Canvas 安装目录,在升级 Canvas 之前,首先停止相关服务,防止升级过程中发生失误损坏数据,切勿在升级 Ruby 或 Bundler 之后关闭相关服务,将无法执行。

$ sudo /etc/init.d/canvas_init restart
$ sudo /etc/init.d/apache2 stop
$ RAILS_ENV=production /data/canvas/script/delayed_job stop
$ sudo systemctl stop postgresql

 

Git Pull

注意以下命令会覆盖当前 Canvas 安装实例的所有自定义修改内容

$ git fetch && git reset --hard origin/prod

 

如升级过程中遇到 ruby 版本报错,首先卸载先前版本,通过如下命令查看已安装版本:

$ sudo apt list --installed | grep ruby

执行卸载,例如 3.1 版本:

$ sudo apt remove ruby3.1 ruby3.1

 

安装 Ruby-3.3

$ sudo apt install ruby3.3 ruby3.3-dev
$ sudo apt autoremove

 

安装 Bundler 2.5.22

$ sudo gem install bundler -v 2.5.22

 

安装 Canvas 新版本依赖

$ bundle _2.5.22_ install
--- or ---
$ bundle install

 

升级 Node

如果当前 Node 版本不符合最新版本 Canvas 要求,通过传送门进行升级。

更新 browsers-list

$ npx update-browserslist-db@latest

 

编译素材

首先启动数据库:

sudo systemctl start postgresql
$ RAILS_ENV=production bundle exec rake canvas:compile_assets

编译结果如图所示:

 

 

升级数据库

升级数据库之前,先暂停缓存相关配置:

$ cd /where_is_your_canvas_installed
$ mv config/cache_store.yml cache_store.yml.bak
$ mv config/redis.yml redis.yml.bak

开始执行数据库 migration

$ RAILS_ENV=production bundle exec rake db:migrate:predeploy
$ RAILS_ENV=production bundle exec rake db:migrate
$ RAILS_ENV=production bundle exec rake db:load_notifications

升级过程如图所示:

 

常见问题:

 

问题1: bundler

$ bundle -v
/usr/local/bin/bundle:25:in `load': cannot load such file -- /usr/lib/ruby/gems/3.3.0/gems/bundler-2.5.22/exe/bundle (LoadError) ...

解决:

$ sudo gem install bundler -v 2.5.22

 

问题2: RAILS_ENV=production bundle exec rake canvas:compile_assets 报错

rake aborted!
Parallel::UndumpableException: NameError: uninitialized constant ApiRouteSet (Parallel::UndumpableException)

 

分享:

0 留言

留言

您的留言将被人工审核,请勿发表色情、反动言论。

您可能感兴趣

如何为 Canvas 学习系统配置 Microsoft Azure AD 登录

学校在部署 Canvas 学习系统时,大多会希望其与现有账户系统集成,实现单点登录(SSO),这样可以方便用户...

Canvas 数据库 PostgreSQL 维护贴士

通常 Canvas 管理员需要外部工具,监控和维护 Canvas 数据库,其数据库采用的是 PostgreSQL 数据库,当我们...

Canvas LTI 外部工具详解

Canvas LTI 集成是将第三方学习工具嵌入 Canvas 中,实现无缝整合和交互,提供更丰富的学习体验和功能扩展...

如何编译开源版本 Canvas iOS App

Instructure 公司秉承开源精神,提供了全套的 iOS 和 Android App 开源程序,爱好者或开发者可自行下载进行...