Canvas LMS 安装攻略

发布于: 21 September, 2021
分享:

Canvas LMS 是一款功能强大,可全方位覆盖 K-12 学习资源管理,其安装过程比较复杂,特此全程记录并分享给大家。

安装、配置 Canvas LMS

官方使用指南:

https://guides.instructure.com

 

1. 操作系统

1.1 创建系统用户

$ sudo adduser canvas

 

1.2 修改 canvas 用户 sudo 权限

$ visudo
$ su canvas

 

1.3 创建工作区目录

$ sudo mkdir -p /data
$ sudo chown canvas:canvas /data

 

1.4 切换至工作区目录:

$ cd /data

 

2. 安装及配置 PostgreSQL 数据库

2.1 安装 PostgreSQL

传送门

 

2.2 创建一个 PostgreSQL 数据库用户:

$ sudo -u postgres createuser canvas --no-createdb --no-superuser --no-createrole --pwprompt

输入 2 次数据库用户密码

 

2.3 创建 Canvas 数据库:

$ sudo -u postgres createdb canvas_production --owner=canvas

 

3. 安装 Git:

$ sudo apt install git

 

4. 克隆 Canvas LMS:

$ git clone https://github.com/instructure/canvas-lms.git canvas
$ cd canvas
$ git checkout prod

 

4.1 修改 canvas 文件夹权限:

$ sudo chown -R canvas /data/canvas

 

4.2 再次确认切换至 canvas 安装目录:

$ cd /data/canvas

 

5. 安装 Ruby

5.1.1 安装依赖

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:instructure/ruby
$ sudo apt update
$ sudo apt install -y ruby3.1 ruby3.1-dev zlib1g-dev libxml2-dev \
                       libsqlite3-dev libxmlsec1-dev libyaml-dev  \
                       libidn11-dev curl make g++

 

5.1.2 Ubuntu Server 22.04 (手动安装 Ruby 3.1 仅限开发者)

这里需要注意,网络上常见的通过添加 brightbox 源的方法,因为 Ruby 2.7 已经停止维护,并且和 Ubuntu 22.04 OpenSSL 版本冲突,无法安装 Ruby 2.7,更多  Ruby 版本查看官网

$ curl -O https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.4.tar.gz
$ tar -xzvf ruby-3.1.4.tar.gz
$ cd ruby-3.1.4
$ ./configure
$ make
$ make install

 

5.2 安装 Node.js

NodeJS 官方声明,之前常用的 curl 调用安装脚本方法将废止。本文适用方法请参考:传送门

如果不确定当前操作系统是否可以满足 NodeJS 版本,可以通过:

$ apt show nodejs

查看当前系统所适配的 NodeJS 版本,再决定是否通过添加外部源的方式安装。

 

5.3 安装 bundler 包管理器

$ cd /data/canvas
$ rm -f Gemfile.lock # 防止版本干扰
$ sudo gem install bundler --version 2.4.19

 

5.4 通过 bundler 管理器安装 bundle

$ bundle config set --local path vendor/bundle
$ bundle install

默认安装后,如果 cat -n /var/log/apache2/error.log 中出现 strscan 版本报错,可尝试通过更新解决:

$ sudo gem update strscan

 

5.5 安装 Yarn

$ sudo npm -g install yarn

 

5.6 通过 Yarn 安装依赖

Canvas 使用了大量的 JS 开源库资源

$ npx update-browserslist-db@latest
$ yarn install

 

6. Canvas 配置文件

批量复制默认配置文件样本:

$ for config in amazon_s3 database delayed_jobs domain dynamic_settings file_store outgoing_mail security external_migration; do cp config/$config.yml.example config/$config.yml; done

 

6.1 动态配置文件

$ nano config/dynamic_settings.yml

6.2 数据库配置文件

$ nano config/database.yml

6.3 发送邮件配置文件

$ nano config/outgoing_mail.yml

6.4 URL 配置文件

$ nano config/domain.yml

6.5 安全配置文件

修改 security.yml 文件,替换加密密钥,长度为至少20个字符随机字符串

$ nano config/security.yml

 

7. 初始化数据库

$ yarn gulp rev
$ RAILS_ENV=production bundle exec rake db:initial_setup

 

7.1 数据库初始化出错:

2022-AUG-04 版本后,执行 db:initial_setup 报错,可尝试如下步骤:

$ mv db/migrate/20210823222355_change_immersive_reader_allowed_on_to_on.rb .
$ mv db/migrate/20210812210129_add_singleton_column.rb db/migrate/20111111214311_add_singleton_column.rb
$ RAILS_ENV=production bundle exec rake db:initial_setup
$ mv 20210823222355_change_immersive_reader_allowed_on_to_on.rb db/migrate/.
$ RAILS_ENV=production bundle exec rake db:migrate

 

8. 生成素材库

$ mkdir -p log tmp/pids public/assets app/stylesheets/brandable_css_brands
$ touch app/stylesheets/_brandable_variables_defaults_autogenerated.scss
$ touch Gemfile.lock
$ touch log/production.log
$ sudo chown -R canvas config/environment.rb log tmp public/assets app/stylesheets/_brandable_variables_defaults_autogenerated.scss app/stylesheets/brandable_css_brands Gemfile.lock config.ru

 

开始打包素材:

如果使用 Node 18 以上版本,会报错

$ RAILS_ENV=production bundle exec rake canvas:compile_assets

 

9. 修改配置文件权限

$ sudo chmod 400 config/*.yml

 

10. 安装 Apache 和 Passenger

10.1 安装

$ sudo apt-get install -y dirmngr gnupg apt-transport-https ca-certificates curl
$ curl https://oss-binaries.phusionpassenger.com/auto-software-signing-gpg-key.txt | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/phusion.gpg >/dev/null
$ sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger $(lsb_release -cs) main > /etc/apt/sources.list.d/passenger.list'
$ sudo apt update
$ sudo apt install passenger libapache2-mod-passenger apache2

 

启用 Apache 相关模块:

$ sudo a2enmod rewrite
$ sudo a2enmod passenger
$ sudo a2enmod ssl

 

编辑 Passenger 模块配置文件:

$ sudo nano /etc/apache2/mods-enabled/passenger.conf

 

添加 PassengerDefaultUser canvas,如下:

PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
PassengerDefaultRuby /usr/bin/passenger_free_ruby
PassengerInstanceRegistryDir /var/run/passenger-instreg
PassengerDefaultUser canvas

 

10.2 安装XSendFile

$ sudo apt-get install libapache2-mod-xsendfile

开启 XSendFile 模块:

$ sudo a2enmod xsendfile

为了避免今后更新 Canvas 程序时覆盖环境配置,可创建另外一个 production-local.rb 增加 Canvas 环境配置:

$ nano ./config/environments/production-local.rb

添加一行:config.action_dispatch.x_sendfile_header = 'X-Sendfile'

保存,退出编辑。

 

10.3 准备证书

$ mkdir -p /data/cert
$ cd /data/cert
$ sudo openssl dhparam -out dhparam.pem 4096

 

11. 配置 VHOST

 

 

12. 安装 Redis 缓存服务

$ sudo apt-get install -y redis-server
$ sudo nano /etc/redis/redis.conf
$ sudo systemctl enable redis-server
$ sudo systemctl start redis.service

 

缓存配置文件:

$ cp config/cache_store.yml.example config/cache_store.yml
$ nano config/cache_store.yml

写入:

production:
  cache_store: redis_cache_store


Redis 配置文件:

$ cp config/redis.yml.example config/redis.yml
$ nano config/redis.yml

写入:

production:
  servers:
    - redis://password@localhost
  db: 1

修改 redis.yml 权限:

$ sudo chown canvas:canvas config/redis.yml
$ sudo chmod 400 config/redis.yml

 

13. 配置 Canvas 自动化任务

$ sudo ln -s /data/canvas/script/canvas_init /etc/init.d/canvas_init
$ sudo update-rc.d canvas_init defaults
$ sudo /etc/init.d/canvas_init start

返回:Daemonizing... 表示成功!

 

14. 重启 Canvas

$ sudo /etc/init.d/apache2 restart
$ sudo /etc/init.d/canvas_init restart
$ cd /data/canvas/ && RAILS_ENV=production script/delayed_job restart

 

安装 QTI Migration Tool

当用户操作复制、导入测验(Quiz)内容时,需要 QTI Migration Tool 支持,具体安装步骤如下:

安装 Python 3 和依赖:

$ pip3 install lxml

克隆 QTIMigration Tool

$ cd /data/canvas/vendor
$ git clone https://github.com/instructure/QTIMigrationTool.git QTIMigrationTool
$ cd QTIMigrationTool
$ chmod +x migrate.py

完成上述步骤后,重启 delayed_job:

$ cd /data/canvas
$ script/delayed_job restart

安装完成后,Site Admin -> Plugins -> QTI Converter 开启支持,如果 QTI Migration 工具安装成功,Canvas 会自动识别并开启该插件。

 

 

0 留言

留言

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

您可能感兴趣

Canvas LTI XML 配置范例

Canvas 支持 LTI 标准协议,用于在 Canvas 学习管理系统(LMS)和外部教育工具或应用程序之间进行集成。这...

Canvas 安装 Rich Content Editor (RCE)

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

Canvas 数据库 PostgreSQL 维护贴士

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

什么是 Canvas LMS 学习系统?

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