Hvordan installere Canvas LMS på Ubuntu 22.04

Canvas LMS-installasjon er enkel hvis du gjorde det før. Men for første gang kan det bli tøft. Hvis dette er første gang du prøver å installere Canvas LMS, må du definitivt lese denne installasjonsveiledningen for Canvas LMS. Inne vil du finne mange nyttige tips som vil hjelpe deg med å sette opp Canvas LMS produksjonsserver.

For denne veiledningen vil vi bruke en VPS med Ubuntu 22.04 LTS 64 bit. Serveren har 8 GB RAM og 4 CPU-kjerner. Den oppfyller minimale maskinvarekrav for åpen kildekode Canvas LMS. Vi anbefaler ikke å installere Canvas på maskinvare med lavere spesifikasjoner, da installasjonen kan mislykkes. Vi anbefaler heller ikke å bruke andre operativsystemer enn Ubuntu. Canvas LMS-installasjon på Windows støttes ikke.

Før du starter installasjonen, sjekk ut vår Canvas LMS-vertstjeneste. Tjenesten tilbyr administrerte skyservere med åpen kildekode Canvas LMS forhåndsinstallert. Du kan begynne å bruke LMS uten å måtte sette opp og administrere egne servere.

Canvas LMS installasjonstrinn

Oppdater systemet

Først av alt bør vi oppdatere serveren og pakkene til den nyeste versjonen.

# sudo apt update && apt upgrade -y

Installer PostgreSQL databaseserver

Deretter installerer og konfigurerer vi PostgreSQL databaseserver. Når jeg skriver denne artikkelen er postgresql-14 tilgjengelig.

# 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

Last ned Canvas-kode 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 trinnet vil vi opprette en egen systembruker for Canvas LMS-applikasjon. Vi vil laste ned Canvas-kode og installere den under denne kontoen.

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

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

Installer garn

# sudo npm -g install yarn

Installer NodeJS-avhengigheter

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

Konfigurer Canvas LMS

Kopier Canvas standard konfigurasjonsfiler:

$ 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 konfigurasjonsfiler og angi relevante databaseinnstillinger, domeneinnstillinger, serverinnstillinger for utgående e-post 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

Fyll Canvas-databasen

Kjør db:initial_setup for å lage databasetabeller og fylle databasen med innledende data. På dette trinnet vil du bli bedt om å opprette Canvas-administratorbruker.

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

Kjør canvas:compile_assets for å generere malfiler.

$ 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

Deretter trenger vi en webserver for å betjene Canvas. Nginx og Apache er de mest populære alternativene. Vi skal installere Apache Passenger for denne guiden.

$ 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-modulen og start Apache på nytt.

sudo a2enmod passenger
sudo apache2ctl restart

Valider libapache2-mod-passasjer installasjonen. Kjør kommandoene nedenfor for å sikre at passasjer- og libapache2-mod-passasjermodulen er riktig installert.

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

Aktiver i tillegg mod_rewrite og mod_ssl for apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Konfigurer Canvas VirtualHost i Apache

Deaktiver standard Apache virtualhost-konfigurasjonsfil og lag en virtualhost-konfigurasjonsfil for lerretsapplikasjonen.

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

Kopier konfigurasjonen nedenfor til Canvas virtualhost-konfigurasjonsfil. Bytt ut Servernavn, ServerAlias, ServerAdmin, DocumentRoot og andre innstillinger som samsvarer med domenenavnet og appplasseringen.

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

$ sudo a2ensite canvas
$ systemctl reload apache2 

På dette tidspunktet skal du kunne få tilgang til Canvas via nettleseren. Åpne nettleseren din og skriv inn et domenenavn som ble spesifisert i Servernavn. Canvas standard påloggingsside skal vises.

canvas lms login page after successful canvas installation
Canvas LMS-installasjon fullført

 

Ytterligere Canvas Setup Steps

Hvis Canvas-påloggingssiden er lastet inn i nettleseren, er dette et godt tegn. Men vi må fullføre noen flere justeringer for å gjøre Canvas-læringsstyringssystemet med åpen kildekode klart for produksjon.

Installer SSL-sertifikat for 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.

Utfør følgende instruksjoner på kommandolinjen på maskinen for å sikre at du har den nyeste versjonen av 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-sertifikat for Canvas ved hjelp av 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-sertifikat for Canvas er installert

Installer Redis cache-server

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å deretter tilbake til Canvas-kodekatalogen og rediger redis-konfigurasjonsfiler.

vim config/cache_store.yml

Legg til linjer nedenfor i filen:

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

Rediger nå filen redis.yml og sett banen til redis-serveren der.

vim config/redis.yml

Hvis Redis er installert på samme server som Canvas, bør konfigurasjonen din være noe sånt som dette. Erstatt localhost med redis server IP hvis du installerte redis på ekstern server.

production:
  servers:
    - redis://localhost

Lagre konfigurasjonsfilen og start Canvas på nytt for å bruke endringer.

Installer QTIMigrationTool for Canvas

Sett opp Canvas Automated-jobber

Canvas automatiserte jobber bør kjøres for å generere rapporter, sende e-poster osv. Neste kommandoer vil konfigurere og starte Canvas forsinkede jobber.

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 for Rich Content Editor

Feilsøking av Canvas-installasjonsfeil

1. Programmet oppdaget følgende feil: Du har allerede aktivert strscan 3.0.1, men Gemfilen krever strscan 3.0.6. Siden strscan er en standard perle, kan du enten fjerne avhengigheten din av den eller prøve å oppdatere til en nyere versjon av bundler som støtter strscan som en standard perle. (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.

Studiepoeng

  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