Com instal·lar Canvas LMS a Ubuntu 22.04

La instal·lació de Canvas LMS és fàcil si ho heu fet abans. Però per primera vegada pot ser difícil. Si és la primera vegada que intenteu instal·lar Canvas LMS, definitivament haureu de llegir aquesta guia d'instal·lació de Canvas LMS. A l'interior hi trobareu molts consells útils que us ajudaran a configurar el servidor de producció de Canvas LMS.

Per a aquesta guia utilitzarem a VPS amb Ubuntu 22.04 LTS de 64 bits. El servidor té 8 GB de RAM i 4 nuclis de CPU. Compleix els requisits mínims de maquinari per al Canvas LMS de codi obert. No recomanem instal·lar Canvas en maquinari amb especificacions inferiors, ja que la instal·lació pot fallar. Tampoc recomanem utilitzar un sistema operatiu diferent d'Ubuntu. La instal·lació de Canvas LMS a Windows no és compatible.

Abans de començar la instal·lació, consulteu el nostre Servei d'allotjament de Canvas LMS. El servei ofereix servidors en núvol gestionats amb Canvas LMS de codi obert preinstal·lat. Podeu començar a utilitzar el LMS sense la molèstia de configurar i gestionar els propis servidors.

Passos d'instal·lació de Canvas LMS

Actualitzar el sistema

Primer de tot hauríem d'actualitzar el servidor i els paquets a la darrera versió.

# sudo apt update && apt upgrade -y

Instal·leu el servidor de bases de dades PostgreSQL

A continuació instal·lem i configurem el servidor de bases de dades PostgreSQL. Quan escric aquest article, el postgresql-14 està disponible.

# 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

Baixeu el codi Canvas al servidor

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

# sudo apt install git-core

En aquest pas, crearem un usuari del sistema independent per a l'aplicació Canvas LMS. Baixarem el codi Canvas i l'instal·larem amb aquest compte.

# 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

Instal·leu les dependències de 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

Instal·leu 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++

Instal·leu 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

Instal·leu Bundler i 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

Instal·leu el fil

# sudo npm -g install yarn

Instal·leu les dependències de NodeJS

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

Configura Canvas LMS

Copieu els fitxers de configuració predeterminats de 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

Editeu els fitxers de configuració i introduïu la configuració rellevant de la base de dades, la configuració del domini, la configuració del servidor de correu de sortida, etc.

$ 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

Omple la base de dades Canvas

Executeu db:initial_setup per crear taules de base de dades i omplir la base de dades amb les dades inicials. En aquest pas se us demanarà que creeu un usuari administrador de 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

Generar actius

Executeu canvas:compile_assets per generar fitxers de plantilla.

$ 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

Instal·leu el servidor web Apache i Passenger

A continuació, necessitem un servidor web per servir Canvas. Nginx i Apache són les opcions més populars. Instal·larem Apache Passenger per a aquesta guia.

$ 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

Habiliteu el mòdul Passenger Apache i reinicieu Apache.

sudo a2enmod passenger
sudo apache2ctl restart

Valideu la instal·lació de libapache2-mod-passenger. Executeu les ordres següents per assegurar-vos que el mòdul passatger i libapache2-mod-passenger estiguin instal·lats correctament.

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

A més, activeu mod_rewrite i mod_ssl per a Apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Configureu Canvas VirtualHost a Apache

Desactiveu el fitxer de configuració predeterminat d'Apache virtualhost i creeu un fitxer de configuració de virtualhost per a l'aplicació canvas.

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

Copieu la configuració següent al fitxer de configuració de l'host virtual de Canvas. Substitueix ServerName, ServerAlias, ServerAdmin, DocumentRoot i altres configuracions perquè coincideixin amb el vostre nom de domini i la ubicació de l'aplicació.

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

Activa l'amfitrió virtual de Canvas

$ sudo a2ensite canvas
$ systemctl reload apache2 

En aquest punt hauríeu de poder accedir a Canvas mitjançant el navegador. Obriu el vostre navegador i introduïu un nom de domini especificat a ServerName. Hauria d'aparèixer la pàgina d'inici de sessió predeterminada de Canvas.

canvas lms login page after successful canvas installation
S'ha completat la instal·lació de Canvas LMS

 

Passos addicionals de configuració del llenç

Si la pàgina d'inici de sessió de Canvas es carrega al navegador, això és un bon senyal. Però hem de completar uns quants retocs més per preparar el sistema de gestió d'aprenentatge Canvas de codi obert per a la producció.

Instal·leu el certificat SSL per a 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.

Executeu les instruccions següents a la línia d'ordres de la màquina per assegurar-vos que teniu la versió més recent de snapd.

sudo snap install core; sudo snap refresh core

Elimineu certbot-auto i qualsevol paquet del sistema operatiu Certbot

sudo apt-get remove certbot

Instal·leu Certbot

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

Instal·leu el certificat SSL per a Canvas mitjançant 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
El certificat SSL per a Canvas està instal·lat

Instal·leu el servidor de memòria cau 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

A continuació, torneu al directori de codi Canvas i editeu els fitxers de configuració de redis.

vim config/cache_store.yml

Afegiu línies a continuació al fitxer:

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

Ara editeu el fitxer redis.yml i configureu-hi el camí del servidor redis.

vim config/redis.yml

Si Redis està instal·lat al mateix servidor que Canvas, la vostra configuració hauria de ser com aquesta. Substituïu localhost per la IP del servidor redis si heu instal·lat redis al servidor extern.

production:
  servers:
    - redis://localhost

Deseu el fitxer de configuració i reinicieu Canvas per aplicar els canvis.

Instal·leu QTIMigrationTool per a Canvas

Configurar treballs automatitzats de Canvas

Els treballs automatitzats de Canvas s'han d'executar per generar informes, enviar correus electrònics, etc. Les ordres següents configuraran i iniciaran els treballs retardats de 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

Instal·leu l'API RCE per a Rich Content Editor

Resolució d'errors d'instal·lació de Canvas

1. L'aplicació ha trobat el següent error: Ja heu activat strscan 3.0.1, però el vostre Gemfile requereix strscan 3.0.6. Com que strscan és una joia predeterminada, podeu eliminar la vostra dependència o provar d'actualitzar a una versió més nova de bundler que admeti strscan com a joia predeterminada. (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.

Crèdits

  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