Come installare Canvas LMS su Ubuntu 22.04

L'installazione di Canvas LMS è semplice se l'hai già fatta prima. Ma per la prima volta potrebbe essere dura. Se è la prima volta che provi a installare Canvas LMS, allora devi assolutamente leggere questa guida all'installazione di Canvas LMS. All'interno troverai molti suggerimenti utili che ti aiuteranno a configurare il server di produzione Canvas LMS.

Per questa guida utilizzeremo a VPS con Ubuntu 22.04 LTS 64 bit. Il server ha 8 GB di RAM e 4 core CPU. Soddisfa i requisiti hardware minimi per Canvas LMS open source. Non consigliamo di installare Canvas su hardware con specifiche inferiori poiché l'installazione potrebbe non riuscire. Inoltre, non consigliamo di utilizzare sistemi operativi diversi da Ubuntu. L'installazione di Canvas LMS su Windows non è supportata.

Prima di iniziare l'installazione, consulta il nostro Servizio di hosting LMS Canvas. Il servizio offre server cloud gestiti con Canvas LMS open source preinstallato. Puoi iniziare a utilizzare l'LMS senza il fastidio di configurare e gestire i propri server.

Passaggi di installazione di Canvas LMS

Aggiorna il sistema

Prima di tutto dovremmo aggiornare il server e i pacchetti all'ultima versione.

# sudo apt update && apt upgrade -y

Installa il server database PostgreSQL

Successivamente installiamo e configuriamo il server database PostgreSQL. Quando scrivo questo articolo postgresql-14 è disponibile.

# 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

Scarica il codice Canvas sul server

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

# sudo apt install git-core

In questo passaggio creeremo un utente di sistema separato per l'applicazione Canvas LMS. Scaricheremo il codice Canvas e lo installeremo con questo account.

# 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

Installa le dipendenze di 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

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

Installa 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

Installa Bundler e 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

Installa il filato

# sudo npm -g install yarn

Installa le dipendenze di NodeJS

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

Configura Canvas LMS

Copia i file di configurazione predefiniti di 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

Modifica i file di configurazione e inserisci le impostazioni del database, le impostazioni del dominio, le impostazioni del server di posta in uscita, ecc.

$ 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

Popolare il database Canvas

Esegui db:initial_setup per creare tabelle di database e popolare il database con i dati iniziali. In questo passaggio ti verrà chiesto di creare l'utente amministratore di 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

Genera risorse

Esegui canvas:compile_assets per generare file modello.

$ 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

Installa il server web Apache e Passenger

Successivamente abbiamo bisogno di un server web per servire Canvas. Nginx e Apache sono le opzioni più popolari. Installeremo Apache Passenger per questa guida.

$ 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

Abilita il modulo Passenger Apache e riavvia Apache.

sudo a2enmod passenger
sudo apache2ctl restart

Convalidare l'installazione di libapache2-mod-passenger. Esegui i comandi seguenti per assicurarti che il modulo passeggero e libapache2-mod-passenger siano installati correttamente.

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

Abilita inoltre mod_rewrite e mod_ssl per apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Configura Canvas VirtualHost in Apache

Disabilita il file di configurazione dell'host virtuale Apache predefinito e crea un file di configurazione dell'host virtuale per l'applicazione canvas.

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

Copia la configurazione di seguito nel file di configurazione dell'host virtuale Canvas. Sostituisci NomeServer, AliasServer, ServerAdmin, DocumentRoot e altre impostazioni in modo che corrispondano al nome del dominio e alla posizione dell'app.

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

Abilita host virtuale Canvas

$ sudo a2ensite canvas
$ systemctl reload apache2 

A questo punto dovresti riuscire ad accedere a Canvas tramite browser. Apri il browser e digita il nome di dominio specificato in NomeServer. Dovrebbe essere visualizzata la pagina di accesso predefinita di Canvas.

canvas lms login page after successful canvas installation
Installazione di Canvas LMS completata

 

Ulteriori passaggi per l'impostazione della tela

Se la pagina di accesso di Canvas è caricata nel browser, questo è un buon segno. Ma dobbiamo apportare alcune altre modifiche per rendere il sistema di gestione dell’apprendimento Canvas open source pronto per la produzione.

Installa il certificato SSL per 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.

Esegui le seguenti istruzioni sulla riga di comando sulla macchina per assicurarti di disporre della versione più recente di snapd.

sudo snap install core; sudo snap refresh core

Rimuovere certbot-auto e tutti i pacchetti del sistema operativo Certbot

sudo apt-get remove certbot

Installa Certbot

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

Installa il certificato SSL per Canvas utilizzando 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
Il certificato SSL per Canvas è installato

Installa il server cache 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

Successivamente torna alla directory del codice Canvas e modifica i file di configurazione di Redis.

vim config/cache_store.yml

Aggiungi le righe seguenti nel file:

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

Ora modifica il file redis.yml e imposta lì il percorso del server Redis.

vim config/redis.yml

Se Redis è installato sullo stesso server di Canvas, la tua configurazione dovrebbe essere simile a questa. Sostituisci localhost con l'IP del server Redis se hai installato Redis su un server esterno.

production:
  servers:
    - redis://localhost

Salva il file di configurazione e riavvia Canvas per applicare le modifiche.

Installa QTIMigrationTool per Canvas

Impostazione dei lavori automatizzati Canvas

I lavori automatizzati Canvas devono essere in esecuzione per generare report, inviare e-mail, ecc. I comandi successivi configureranno e avvieranno i lavori ritardati 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

Installa l'API RCE per Rich Content Editor

Risoluzione dei problemi relativi agli errori di installazione del Canvas

1. L'applicazione ha riscontrato il seguente errore: Hai già attivato strscan 3.0.1, ma il tuo Gemfile richiede strscan 3.0.6. Poiché strscan è un gem predefinito, puoi rimuovere la tua dipendenza da esso o provare ad aggiornare a una versione più recente di bundler che supporti strscan come gem predefinito. (Gemma::ErroreCaricamento)

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.

Crediti

  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