So installieren Sie Canvas LMS unter Ubuntu 22.04

Die Installation von Canvas LMS ist einfach, wenn Sie sie zuvor durchgeführt haben. Aber zum ersten Mal könnte es schwierig sein. Wenn Sie zum ersten Mal versuchen, Canvas LMS zu installieren, müssen Sie unbedingt diese Canvas LMS-Installationsanleitung lesen. Darin finden Sie viele nützliche Tipps, die Ihnen bei der Einrichtung des Canvas LMS-Produktionsservers helfen.

Für diesen Leitfaden verwenden wir a VPS mit Ubuntu 22.04 LTS 64 Bit. Der Server verfügt über 8 GB RAM und 4 CPU-Kerne. Es erfüllt die minimalen Hardwareanforderungen für das Open-Source-Canvas LMS. Wir empfehlen, Canvas nicht auf Hardware mit niedrigeren Spezifikationen zu installieren, da die Installation möglicherweise fehlschlägt. Wir empfehlen außerdem nicht, ein anderes Betriebssystem als Ubuntu zu verwenden. Die Installation von Canvas LMS unter Windows wird nicht unterstützt.

Bevor Sie mit der Installation beginnen, schauen Sie sich unsere an Canvas LMS-Hosting-Service. Der Dienst bietet verwaltete Cloud-Server mit vorinstalliertem Open-Source-Canvas LMS. Sie können mit der Nutzung des LMS beginnen, ohne mühsam eigene Server einrichten und verwalten zu müssen.

Canvas LMS-Installationsschritte

Aktualisieren Sie das System

Zunächst sollten wir den Server und die Pakete auf die neueste Version aktualisieren.

# sudo apt update && apt upgrade -y

Installieren Sie den PostgreSQL-Datenbankserver

Als nächstes installieren und konfigurieren wir den PostgreSQL-Datenbankserver. Wenn ich diesen Artikel schreibe, ist postgresql-14 verfügbar.

# 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

Laden Sie den Canvas-Code auf den Server herunter

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

# sudo apt install git-core

In diesem Schritt erstellen wir einen separaten Systembenutzer für die Canvas LMS-Anwendung. Wir werden den Canvas-Code herunterladen und unter diesem Konto installieren.

# 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

Installieren Sie Canvas LMS-Abhängigkeiten

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

Installieren Sie 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++

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

Installieren Sie Bundler und 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

Garn installieren

# sudo npm -g install yarn

Installieren Sie NodeJS-Abhängigkeiten

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

Konfigurieren Sie Canvas LMS

Kopieren Sie die Standardkonfigurationsdateien von 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

Bearbeiten Sie Konfigurationsdateien und geben Sie relevante Datenbankeinstellungen, Domäneneinstellungen, Postausgangsservereinstellungen usw. ein.

$ 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

Füllen Sie die Canvas-Datenbank auf

Führen Sie db:initial_setup aus, um Datenbanktabellen zu erstellen und die Datenbank mit Anfangsdaten zu füllen. In diesem Schritt werden Sie aufgefordert, einen Canvas-Administratorbenutzer zu erstellen.

$ 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

Vermögenswerte generieren

Führen Sie „canvas:compile_assets“ aus, um Vorlagendateien zu generieren.

$ 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

Installieren Sie den Apache-Webserver und Passenger

Als nächstes benötigen wir einen Webserver, um Canvas bereitzustellen. Nginx und Apache sind die beliebtesten Optionen. Für dieses Handbuch werden wir Apache Passenger installieren.

$ 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

Aktivieren Sie das Passenger Apache-Modul und starten Sie Apache neu.

sudo a2enmod passenger
sudo apache2ctl restart

Validieren Sie die Installation von libapache2-mod-passenger. Führen Sie die folgenden Befehle aus, um sicherzustellen, dass das Passenger- und das libapache2-mod-passenger-Modul korrekt installiert sind.

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

Aktivieren Sie außerdem mod_rewrite und mod_ssl für Apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Konfigurieren Sie Canvas VirtualHost in Apache

Deaktivieren Sie die standardmäßige Apache Virtualhost-Konfigurationsdatei und erstellen Sie eine Virtualhost-Konfigurationsdatei für die Canvas-Anwendung.

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

Kopieren Sie die Konfiguration unten in die Canvas-Virtualhost-Konfigurationsdatei. Ersetzen Servername, ServerAlias, ServerAdmin, DocumentRoot und andere Einstellungen entsprechend Ihrem Domainnamen und App-Standort.

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

Aktivieren Sie den virtuellen Canvas-Host

$ sudo a2ensite canvas
$ systemctl reload apache2 

An diesem Punkt sollten Sie über den Browser auf Canvas zugreifen können. Öffnen Sie Ihren Browser und geben Sie einen Domänennamen ein, der in angegeben wurde Servername. Die standardmäßige Canvas-Anmeldeseite sollte angezeigt werden.

canvas lms login page after successful canvas installation
Canvas LMS-Installation abgeschlossen

 

Weitere Schritte zur Leinwandeinrichtung

Wenn die Canvas-Anmeldeseite im Browser geladen ist, ist das ein gutes Zeichen. Wir müssen jedoch noch einige weitere Optimierungen vornehmen, um das Open-Source-Lernmanagementsystem Canvas für die Produktion bereit zu machen.

Installieren Sie das SSL-Zertifikat für 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.

Führen Sie die folgenden Anweisungen in der Befehlszeile auf dem Computer aus, um sicherzustellen, dass Sie über die neueste Version von snapd verfügen.

sudo snap install core; sudo snap refresh core

Entfernen Sie certbot-auto und alle Certbot OS-Pakete

sudo apt-get remove certbot

Installieren Sie Certbot

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

Installieren Sie das SSL-Zertifikat für Canvas mit 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-Zertifikat für Canvas ist installiert

Installieren Sie den 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

Gehen Sie als nächstes zurück zum Canvas-Codeverzeichnis und bearbeiten Sie die Redis-Konfigurationsdateien.

vim config/cache_store.yml

Fügen Sie der Datei die folgenden Zeilen hinzu:

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

Bearbeiten Sie nun die Datei redis.yml und legen Sie dort den Pfad zum Redis-Server fest.

vim config/redis.yml

Wenn Redis auf demselben Server wie Canvas installiert ist, sollte Ihre Konfiguration in etwa so aussehen. Ersetzen Sie „localhost“ durch die IP des Redis-Servers, wenn Sie Redis auf einem externen Server installiert haben.

production:
  servers:
    - redis://localhost

Speichern Sie die Konfigurationsdatei und starten Sie Canvas neu, um die Änderungen zu übernehmen.

Installieren Sie QTIMigrationTool für Canvas

Richten Sie automatisierte Canvas-Jobs ein

Automatisierte Canvas-Jobs sollten ausgeführt werden, um Berichte zu erstellen, E-Mails zu senden usw. Mit den nächsten Befehlen werden verzögerte Canvas-Jobs konfiguriert und gestartet.

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

Installieren Sie die RCE-API für den Rich Content Editor

Fehlerbehebung bei Canvas-Installationsfehlern

1. Die Anwendung hat den folgenden Fehler festgestellt: Sie haben strscan 3.0.1 bereits aktiviert, aber Ihr Gemfile erfordert strscan 3.0.6. Da es sich bei strscan um ein Standard-Gem handelt, können Sie entweder Ihre Abhängigkeit davon entfernen oder versuchen, auf eine neuere Version des Bundlers zu aktualisieren, die strscan als Standard-Gem unterstützt. (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