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 安装 Rich Content Editor (RCE)

Canvas 安装 Rich Content Editor (RCE) 可以为用户提供一个功能强大且用户友好的文本编辑工具

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

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

什么是 Canvas LMS 学习系统?

Canvas 是一个基于网络的学习管理系统或 LMS。学习机构、教育工作者和学生使用它来访问和管理在线课程学习...