Canvas LMS installeren op Ubuntu 22.04

De installatie van Canvas LMS is eenvoudig als je dit al eerder hebt gedaan. Maar voor de eerste keer kan het moeilijk zijn. Als dit de eerste keer is dat je Canvas LMS probeert te installeren, dan moet je zeker deze Canvas LMS installatiehandleiding lezen. Hierin vindt u tal van nuttige tips die u zullen helpen bij het instellen van de Canvas LMS-productieserver.

Voor deze handleiding gebruiken we een VPS met Ubuntu 22.04 LTS 64-bits. Server heeft 8 GB RAM en 4 CPU-kernen. Het voldoet aan de minimale hardwarevereisten voor het open source Canvas LMS. We raden af ​​om Canvas te installeren op hardware met lagere specificaties, omdat de installatie mogelijk mislukt. We raden ook af om een ​​ander besturingssysteem dan Ubuntu te gebruiken. Canvas LMS-installatie op Windows wordt niet ondersteund.

Voordat u met de installatie begint, raadpleegt u onze Canvas LMS-hostingservice. De service biedt beheerde cloudservers waarop open-source Canvas LMS vooraf is geïnstalleerd. U kunt het LMS gaan gebruiken zonder het gedoe van het opzetten en beheren van eigen servers.

Installatiestappen voor Canvas LMS

Update het systeem

Allereerst moeten we de server en pakketten updaten naar de nieuwste versie.

# sudo apt update && apt upgrade -y

Installeer de PostgreSQL-databaseserver

Vervolgens installeren en configureren we de PostgreSQL-databaseserver. Wanneer ik dit artikel schrijf, is postgresql-14 beschikbaar.

# 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 Canvas-code naar de server

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

# sudo apt install git-core

Bij deze stap maken we een afzonderlijke systeemgebruiker aan voor de Canvas LMS-applicatie. We zullen Canvas-code downloaden en onder dit account installeren.

# 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

Installeer Canvas LMS-afhankelijkheden

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

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

Installeer 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

Installeer Bundler en 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

Garen installeren

# sudo npm -g install yarn

Installeer NodeJS-afhankelijkheden

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

Configureer Canvas LMS

Kopieer de standaardconfiguratiebestanden van 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

Bewerk configuratiebestanden en voer relevante database-instellingen, domeininstellingen, uitgaande mailserverinstellingen enz. in.

$ 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

Vul de Canvas-database in

Voer db:initial_setup uit om databasetabellen te maken en de database te vullen met initiële gegevens. Bij deze stap wordt u gevraagd een Canvas-beheerdersgebruiker aan te maken.

$ 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

Genereer activa

Voer canvas:compile_assets uit om sjabloonbestanden te genereren.

$ 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

Installeer Apache-webserver en Passenger

Vervolgens hebben we een webserver nodig om Canvas te bedienen. Nginx en Apache zijn de meest populaire opties. We gaan Apache Passenger voor deze handleiding installeren.

$ 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

Schakel de Passenger Apache-module in en start Apache opnieuw.

sudo a2enmod passenger
sudo apache2ctl restart

Valideer libapache2-mod-passenger de installatie. Voer onderstaande opdrachten uit om ervoor te zorgen dat de passagiers- en libapache2-mod-passenger-module correct zijn geïnstalleerd.

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

Schakel bovendien mod_rewrite en mod_ssl in voor apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Configureer Canvas VirtualHost in Apache

Schakel het standaard Apache virtualhost-configuratiebestand uit en maak een virtualhost-configuratiebestand voor de canvastoepassing.

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

Kopieer de onderstaande configuratie naar het Canvas virtualhost-configuratiebestand. Vervangen Servernaam, ServerAlias, ServerAdmin, DocumentRoot en andere instellingen die overeenkomen met uw domeinnaam en app-locatie.

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

Schakel de virtuele Canvas-host in

$ sudo a2ensite canvas
$ systemctl reload apache2 

Op dit punt zou je Canvas via de browser moeten kunnen openen. Open uw browser en typ een domeinnaam die is opgegeven in Servernaam. De standaardinlogpagina van Canvas zou moeten verschijnen.

canvas lms login page after successful canvas installation
Installatie van Canvas LMS voltooid

 

Verdere stappen voor het instellen van canvas

Als de Canvas-inlogpagina in de browser wordt geladen, is dit een goed teken. Maar we moeten nog een paar aanpassingen doorvoeren om het open source Canvas-leerbeheersysteem gereed te maken voor productie.

Installeer SSL-certificaat voor 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.

Voer de volgende instructies uit op de opdrachtregel op de machine om er zeker van te zijn dat u over de nieuwste versie van snapd beschikt.

sudo snap install core; sudo snap refresh core

Verwijder certbot-auto en alle Certbot OS-pakketten

sudo apt-get remove certbot

Certbot installeren

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

Installeer een SSL-certificaat voor Canvas met behulp van 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-certificaat voor Canvas is geïnstalleerd

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

Ga vervolgens terug naar de Canvas-codemap en bewerk de redis-configuratiebestanden.

vim config/cache_store.yml

Voeg onderstaande regels toe aan het bestand:

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

Bewerk nu het bestand redis.yml en stel daar het pad naar de redis-server in.

vim config/redis.yml

Als Redis op dezelfde server als Canvas is geïnstalleerd, zou uw configuratie er ongeveer zo uit moeten zien. Vervang localhost door redis-server-IP als u redis op een externe server hebt geïnstalleerd.

production:
  servers:
    - redis://localhost

Sla het configuratiebestand op en start Canvas opnieuw om de wijzigingen toe te passen.

Installeer QTIMigrationTool voor Canvas

Stel Canvas geautomatiseerde taken in

Geautomatiseerde Canvas-taken moeten worden uitgevoerd om rapporten te genereren, e-mails te verzenden enz. Met de volgende opdrachten worden vertraagde Canvas-taken geconfigureerd en gestart.

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

Installeer RCE API voor Rich Content Editor

Problemen met Canvas-installatiefouten oplossen

1. De toepassing heeft de volgende fout aangetroffen: U heeft strscan 3.0.1 al geactiveerd, maar uw Gemfile vereist strscan 3.0.6. Omdat strscan een standaard edelsteen is, kunt u uw afhankelijkheid ervan wegnemen of proberen bij te werken naar een nieuwere versie van Bundler die strscan als standaard edelsteen ondersteunt. (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.

Kredieten

  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