Як встановити Canvas LMS на Ubuntu 22.04

Встановити Canvas LMS легко, якщо ви зробили це раніше. Але вперше це може бути важко. Якщо ви вперше намагаєтеся встановити Canvas LMS, вам обов’язково потрібно прочитати цей посібник зі встановлення Canvas LMS. Усередині ви знайдете багато корисних порад, які допоможуть вам налаштувати робочий сервер Canvas LMS.

Для цього посібника ми будемо використовувати a VPS з Ubuntu 22.04 LTS 64 біт. Сервер має 8 Гб оперативної пам'яті та 4 ядра ЦП. Він відповідає мінімальним вимогам до обладнання для Canvas LMS з відкритим кодом. Ми не рекомендуємо встановлювати Canvas на обладнання з нижчими характеристиками, оскільки інсталяція може завершитися помилкою. Ми також не рекомендуємо використовувати іншу ОС, крім Ubuntu. Інсталяція Canvas LMS у Windows не підтримується.

Перш ніж розпочати встановлення, перегляньте наш Служба хостингу Canvas LMS. Сервіс пропонує керовані хмарні сервери з попередньо встановленим Canvas LMS з відкритим кодом. Ви можете почати використовувати LMS без проблем із налаштуванням власних серверів і керування ними.

Етапи встановлення Canvas LMS

Оновіть систему

Перш за все, нам слід оновити сервер і пакети до останньої версії.

# sudo apt update && apt upgrade -y

Встановіть сервер бази даних PostgreSQL

Далі ми встановимо та налаштуємо сервер бази даних PostgreSQL. Коли я пишу цю статтю, postgresql-14 доступний.

# sudo apt-get install postgresql-14

Add postgresql  database and a database user for Canvas. You will be asked to set a password for canvas database user.

# sudo -u postgres createuser canvas --no-createdb \
--no-superuser --no-createrole --pwprompt
# sudo -u postgres createdb canvas_production --owner=canvas

Завантажте код Canvas на сервер

We will use Git to get Canvas code. Install Git if you don’t have it already.

# sudo apt install git-core

На цьому кроці ми створимо окремого системного користувача для програми Canvas LMS. Ми завантажимо код Canvas і встановимо його під цим обліковим записом.

# useradd --create-home -s /bin/bash canvas
# chmod 711 /home/canvas
# su - canvas

Clone files from Canvas Github repository into  public_html folder.

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

Встановіть залежності Canvas LMS

Switch back from “canvas” user to a sudo user and install ruby, Node.js, Bundler, Yarn and other Canvas LMS dependencies.

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:instructure/ruby
$ sudo apt-get update

Встановіть Ruby 3.1

$ sudo apt-get install ruby3.1 ruby3.1-dev zlib1g-dev libxml2-dev \
libsqlite3-dev postgresql libpq-dev \
libxmlsec1-dev libidn11-dev curl make g++

Встановіть Node.js

$ curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
$ sudo apt-get install nodejs
$ sudo npm install -g npm@latest

Встановіть Bundler і Ruby Gems

# sudo gem install bundler --version 2.3.26
# su - canvas
$ cd /home/canvas/public_html
$ bundle config set --local path vendor/bundle
$ bundle install

Встановити Yarn

# sudo npm -g install yarn

Встановіть залежності NodeJS

# su - canvas
$ cd /home/canvas/public_html
$ yarn install

Налаштувати Canvas LMS

Скопіюйте файли конфігурації Canvas за замовчуванням:

$ cd /home/canvas/public_html
$ for config in amazon_s3 database \
delayed_jobs domain file_store outgoing_mail security external_migration; \
do cp config/$config.yml.example config/$config.yml; done

Відредагуйте файли конфігурації та введіть відповідні параметри бази даних, параметри домену, параметри сервера вихідної пошти тощо.

$ cp config/dynamic_settings.yml.example config/dynamic_settings.yml
$ vim config/dynamic_settings.yml
$ cp config/database.yml.example config/database.yml
$ vim config/database.yml
$ cp config/outgoing_mail.yml.example config/outgoing_mail.yml
$ vim config/outgoing_mail.yml
$ cp config/domain.yml.example config/domain.yml
$ vim config/domain.yml
$ cp config/security.yml.example config/security.yml
$ vim config/security.yml

Заповнити базу даних Canvas

Запустіть db:initial_setup, щоб створити таблиці бази даних і заповнити базу даних початковими даними. На цьому кроці вам буде запропоновано створити користувача адміністратора Canvas.

$ 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
$ yarn gulp rev
$ 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

Створення активів

Запустіть canvas:compile_assets, щоб створити файли шаблонів.

$ 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
$ RAILS_ENV=production bundle exec rake canvas:compile_assets

Встановіть веб-сервер Apache і Passenger

Далі нам потрібен веб-сервер для обслуговування Canvas. Nginx і Apache є найпопулярнішими варіантами. Ми збираємося встановити Apache Passenger для цього посібника.

$ sudo apt-get install apache2
# Install our PGP key and add HTTPS support for APT
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

# Add our APT repository
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger jammy main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update

# Install Passenger + Apache module
sudo apt-get install -y libapache2-mod-passenger

Увімкніть модуль Passenger Apache і перезапустіть Apache.

sudo a2enmod passenger
sudo apache2ctl restart

Перевірте встановлення libapache2-mod-passenger. Виконайте наведені нижче команди, щоб переконатися, що пасажир і модуль libapache2-mod-passenger встановлено правильно.

sudo /usr/bin/passenger-config validate-install
sudo /usr/sbin/passenger-memory-stats

Додатково ввімкніть mod_rewrite та mod_ssl для apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Налаштуйте Canvas VirtualHost в Apache

Вимкніть файл конфігурації віртуального хосту Apache за замовчуванням і створіть файл конфігурації віртуального хосту для програми canvas.

$ sudo unlink /etc/apache2/sites-enabled/000-default.conf
$ sudo vim /etc/apache2/sites-available/canvas.conf

Скопіюйте конфігурацію нижче у файл конфігурації віртуального хосту Canvas. Замінити Ім’я сервера, псевдонім сервера, адміністратор сервера, корінь документа та інші налаштування відповідно до вашого доменного імені та розташування програми.

<VirtualHost *:80>
ServerName canvas-test.webhostingzone.org
ServerAlias canvasfiles-test.webhostingzone.org
ServerAdmin youremail@example.com
DocumentRoot /home/canvas/public_html/public
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteCond %{REQUEST_URI} !^/health_check
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
ErrorLog /var/log/apache2/canvas_errors.log
LogLevel warn
CustomLog /var/log/apache2/canvas_access.log combined
PassengerPreloadBundler on
SetEnv RAILS_ENV production
<Directory /home/canvas/public_html/public>
Options All
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# If you are only serving HTTP behind a HTTPS-terminating load balancer, skip the next VirtualHost
<VirtualHost *:443>
ServerName canvas-test.webhostingzone.org
ServerAlias canvasfiles-test.webhostingzone.org
ServerAdmin youremail@example.com
DocumentRoot /home/canvas/public_html/public
ErrorLog /var/log/apache2/canvas_errors.log
LogLevel warn
CustomLog /var/log/apache2/canvas_ssl_access.log combined
SSLEngine on
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
# the following ssl certificate files are generated for you from the ssl-cert package.
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
PassengerPreloadBundler on
SetEnv RAILS_ENV production
<Directory /home/canvas/public_html/public>
Options All
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

Увімкнути віртуальний хост Canvas

$ sudo a2ensite canvas
$ systemctl reload apache2 

На цьому етапі ви зможете отримати доступ до Canvas через браузер. Відкрийте браузер і введіть доменне ім'я, яке було вказано в Ім'я сервера. Має з’явитися стандартна сторінка входу Canvas.

canvas lms login page after successful canvas installation
Встановлення Canvas LMS завершено

 

Подальші кроки налаштування Canvas

Якщо сторінка входу Canvas завантажується у браузері, це хороший знак. Але нам потрібно виконати ще кілька налаштувань, щоб система керування навчанням Canvas із відкритим кодом була готова до виробництва.

Встановіть сертифікат SSL для Canvas

When Canvas domain name or sub-domain is pointed to server’s IP address we can proceed and install SSL certificate for Canvas LMS app. For this guide we will install a free LetsEncrypt SSL certificate.

Виконайте наведені нижче інструкції в командному рядку на машині, щоб переконатися, що у вас остання версія snapd.

sudo snap install core; sudo snap refresh core

Видаліть certbot-auto та будь-які пакети Certbot OS

sudo apt-get remove certbot

Встановіть Certbot

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Встановіть сертифікат SSL для Canvas за допомогою certbot

sudo certbot --apache

When SSL certificate is installed correctly you should see a lock icon and text “Connection secure” in a browser when accessing Canvas URI.

SSL certificate is installed for Canvas LMS
Сертифікат SSL для Canvas встановлено

Встановіть кеш-сервер Redis

It’s a good idea to install Redis cache server in order to optimize Canvas performance. Redis version 2.6.x or above is required. Add PPA repository and install Redis.

sysadmin@appserver:/var/canvas$ sudo add-apt-repository ppa:chris-lea/redis-server
sysadmin@appserver:/var/canvas$ sudo apt-get update
sysadmin@appserver:/var/canvas$ sudo apt-get install redis-server

Потім поверніться до каталогу коду Canvas і відредагуйте файли конфігурації redis.

vim config/cache_store.yml

Додайте рядки нижче у файл:

test:
  cache_store: redis_cache_store
development:
  cache_store: redis_cache_store
production:
  cache_store: redis_cache_store

Тепер відредагуйте файл redis.yml і встановіть там шлях до сервера redis.

vim config/redis.yml

Якщо Redis встановлено на тому ж сервері, що й Canvas, ваша конфігурація має бути приблизно такою. Замініть localhost на IP-адресу сервера redis, якщо ви встановили redis на зовнішньому сервері.

production:
  servers:
    - redis://localhost

Збережіть файл конфігурації та перезапустіть Canvas, щоб застосувати зміни.

Встановіть QTIMigrationTool для Canvas

Налаштувати автоматизовані завдання Canvas

Мають бути запущені автоматизовані завдання Canvas для створення звітів, надсилання електронних листів тощо. Наступні команди налаштують і запустять відкладені завдання Canvas.

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

Установіть RCE API для Rich Content Editor

Усунення помилок встановлення Canvas

1. Програма виявила таку помилку: Ви вже активували strscan 3.0.1, але для вашого Gemfile потрібен strscan 3.0.6. Оскільки strscan є гемом за замовчуванням, ви можете видалити свою залежність від нього або спробувати оновити до новішої версії пакетника, який підтримує strscan як гем за замовчуванням. (Gem::LoadError)

Solution: preload Bundler with "PassengerPreloadBundler on" Apache configuration option

2. Common errors during compile assets: FrozenError: can’t modify frozen Array

Solution: delete Canvas project folder, download files from Github again and repeat installation steps.

Кредити

  1. Canvas Production Start – https://github.com/instructure/canvas-lms/wiki/Production-Start
  2. Installing Passenger – https://www.phusionpassenger.com/docs/advanced_guides/install_and_upgrade/apache/install/oss/jammy.html
  3. Canvas LMS Installation Service – https://www.webhostingzone.org/solutions/canvas-lms-installation.html