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 学习系统常见问题

国际学校作为面向高端用户群体,历来以追求更高教学品质和更具前瞻性的服务体系作为发展方向,随着疫情肆虐...

拓朗调研报告:微软凭借 OpenAI 夺回手机市场

微软入局 OpenAI 董事会已成定局,产品架构重大调整或已启动,微软是否收复智能手机这块失地,并为注入最强...