Sådan installeres Canvas LMS på Ubuntu 22.04

Canvas LMS installation er nem, hvis du gjorde det før. Men for første gang kan det være svært. Hvis det er første gang, du prøver at installere Canvas LMS, skal du helt sikkert læse denne Canvas LMS installationsvejledning. Indeni vil du finde masser af nyttige tips, der vil hjælpe dig med at opsætte Canvas LMS produktionsserver.

Til denne guide vil vi bruge en VPS med Ubuntu 22.04 LTS 64 bit. Serveren har 8 GB RAM og 4 CPU-kerner. Det opfylder minimale hardwarekrav til open source Canvas LMS. Vi anbefaler ikke at installere Canvas på hardware med lavere specifikationer, da installationen kan mislykkes. Vi anbefaler heller ikke at bruge andre OS end Ubuntu. Canvas LMS-installation på Windows understøttes ikke.

Inden du begynder installationen, tjek vores Canvas LMS hosting service. Tjenesten tilbyder administrerede cloud-servere med open source Canvas LMS forudinstalleret. Du kan begynde at bruge LMS uden besværet med at opsætte og administrere dine egne servere.

Canvas LMS installationstrin

Opdater systemet

Først og fremmest bør vi opdatere serveren og pakkerne til den nyeste version.

# sudo apt update && apt upgrade -y

Installer PostgreSQL-databaseserver

Dernæst installerer og konfigurerer vi PostgreSQL-databaseserveren. Når jeg skriver denne artikel er postgresql-14 tilgængelig.

# 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

Download lærredskode til serveren

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

# sudo apt install git-core

På dette trin vil vi oprette en separat systembruger til Canvas LMS-applikation. Vi downloader Canvas-kode og installerer den under denne konto.

# 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

Installer Canvas LMS-afhængigheder

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

Installer 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++

Installer 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

Installer Bundler og 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

Monter garn

# sudo npm -g install yarn

Installer NodeJS-afhængigheder

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

Konfigurer Canvas LMS

Kopier Canvas standardkonfigurationsfiler:

$ 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

Rediger konfigurationsfiler og indtast relevante databaseindstillinger, domæneindstillinger, udgående mailserverindstillinger osv.

$ 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

Udfyld Canvas-database

Kør db:initial_setup for at oprette databasetabeller og udfylde databasen med indledende data. På dette trin bliver du bedt om at oprette Canvas-administratorbruger.

$ 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

Generer aktiver

Kør canvas:compile_assets for at generere skabelonfiler.

$ 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

Installer Apache webserver og Passenger

Dernæst har vi brug for en webserver til at betjene Canvas. Nginx og Apache er de mest populære muligheder. Vi skal installere Apache Passenger til denne guide.

$ 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

Aktiver Passenger Apache-modulet og genstart Apache.

sudo a2enmod passenger
sudo apache2ctl restart

Valider libapache2-mod-passager installationen. Kør kommandoer nedenfor for at sikre, at passager- og libapache2-mod-passager-modulet er installeret korrekt.

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

Aktiver desuden mod_rewrite og mod_ssl for apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Konfigurer Canvas VirtualHost i Apache

Deaktiver standard Apache virtualhost-konfigurationsfil og opret en virtualhost-konfigurationsfil til lærredsapplikationen.

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

Kopier konfigurationen nedenfor til Canvas virtualhost-konfigurationsfil. Udskift Servernavn, ServerAlias, ServerAdmin, DocumentRoot og andre indstillinger, der matcher dit domænenavn og appplacering.

<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>

Aktiver Canvas virtuel vært

$ sudo a2ensite canvas
$ systemctl reload apache2 

På dette tidspunkt bør du være i stand til at få adgang til Canvas via browseren. Åbn din browser og indtast et domænenavn, der er angivet i Servernavn. Canvas standard login-side skulle vises.

canvas lms login page after successful canvas installation
Canvas LMS installation afsluttet

 

Yderligere trin til opsætning af lærred

Hvis Canvas login-side er indlæst i browseren, er dette et godt tegn. Men vi er nødt til at gennemføre nogle flere tweaks for at gøre open source Canvas læringsstyringssystemet klar til produktion.

Installer SSL-certifikat til 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.

Udfør følgende instruktioner på kommandolinjen på maskinen for at sikre, at du har den nyeste version af snapd.

sudo snap install core; sudo snap refresh core

Fjern certbot-auto og eventuelle Certbot OS-pakker

sudo apt-get remove certbot

Installer Certbot

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

Installer SSL-certifikat til Canvas ved hjælp af 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-certifikat til Canvas er installeret

Installer Redis cacheserver

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

Gå derefter tilbage til Canvas-kodemappe og rediger redis-konfigurationsfiler.

vim config/cache_store.yml

Tilføj linjer nedenfor i filen:

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

Rediger nu redis.yml-filen og indstil stien til redis-serveren der.

vim config/redis.yml

Hvis Redis er installeret på den samme server som Canvas, bør din konfiguration være noget som denne. Erstat localhost med redis server IP, hvis du installerede redis på ekstern server.

production:
  servers:
    - redis://localhost

Gem konfigurationsfilen, og genstart Canvas for at anvende ændringer.

Installer QTIMigrationTool til Canvas

Opsætning af Canvas Automated jobs

Canvas automatiserede job bør køre for at generere rapporter, sende e-mails osv. Næste kommandoer vil konfigurere og starte Canvas forsinkede job.

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

Installer RCE API til Rich Content Editor

Fejlfinding af Canvas installationsfejl

1. Applikationen stødte på følgende fejl: Du har allerede aktiveret strscan 3.0.1, men din Gemfile kræver strscan 3.0.6. Da strscan er en standardperle, kan du enten fjerne din afhængighed af den eller prøve at opdatere til en nyere version af bundler, der understøtter strscan som en standardperle. (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.

Credits

  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