Cómo instalar Canvas LMS en Ubuntu 22.04

La instalación de Canvas LMS es fácil si lo hiciste antes. Pero por primera vez podría resultar complicado. Si es la primera vez que intenta instalar Canvas LMS, definitivamente debe leer esta guía de instalación de Canvas LMS. En su interior encontrará muchos consejos útiles que le ayudarán a configurar el servidor de producción Canvas LMS.

Para esta guía usaremos un VPS con Ubuntu 22.04 LTS de 64 bits. El servidor tiene 8 GB de RAM y 4 núcleos de CPU. Cumple con los requisitos mínimos de hardware para Canvas LMS de código abierto. No recomendamos instalar Canvas en hardware con especificaciones inferiores ya que la instalación puede fallar. Tampoco recomendamos utilizar ningún sistema operativo que no sea Ubuntu. La instalación de Canvas LMS en Windows no es compatible.

Antes de comenzar la instalación, consulte nuestro Servicio de alojamiento Canvas LMS. El servicio ofrece servidores en la nube administrados con Canvas LMS de código abierto preinstalado. Puede comenzar a utilizar el LMS sin la molestia de configurar y administrar sus propios servidores.

Pasos de instalación de Canvas LMS

Actualizar el sistema

En primer lugar debemos actualizar el servidor y los paquetes a la última versión.

# sudo apt update && apt upgrade -y

Instalar el servidor de base de datos PostgreSQL

A continuación instalamos y configuramos el servidor de base de datos PostgreSQL. Cuando escribo este artículo, 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

Descargar el código de 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 este paso crearemos un usuario de sistema independiente para la aplicación Canvas LMS. Descargaremos el código de Canvas y lo instalaremos en esta cuenta.

# 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

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

Instalar Rubí 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++

Instalar 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

Instalar Bundler y 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

Instalar hilo

# sudo npm -g install yarn

Instalar dependencias de NodeJS

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

Configurar lienzo LMS

Copie los archivos de configuración predeterminados 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

Edite los archivos de configuración e ingrese las configuraciones relevantes de la base de datos, la configuración del dominio, la configuración del servidor de correo saliente, 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

Llenar la base de datos de Canvas

Ejecute db:initial_setup para crear tablas de base de datos y completar la base de datos con datos iniciales. En este paso se le pedirá que cree un usuario 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 activos

Ejecute canvas:compile_assets para generar archivos 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

Instalar el servidor web Apache y Passenger

A continuación necesitamos un servidor web para servir Canvas. Nginx y Apache son las opciones más populares. Vamos a instalar Apache Passenger para esta guía.

$ 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

Habilite el módulo Passenger Apache y reinicie Apache.

sudo a2enmod passenger
sudo apache2ctl restart

Valide libapache2-mod-passenger la instalación. Ejecute los siguientes comandos para asegurarse de que el módulo pasajero y libapache2-mod-passenger estén instalados correctamente.

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

Además, habilite mod_rewrite y mod_ssl para Apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Configurar Canvas VirtualHost en Apache

Deshabilite el archivo de configuración de host virtual de Apache predeterminado y cree un archivo de configuración de host virtual para la aplicación de lienzo.

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

Copie la configuración a continuación en el archivo de configuración de Canvas virtualhost. Reemplazar Nombre del servidor, Alias del servidor, Administrador del servidor, raíz del documento y otras configuraciones para que coincidan con su nombre de dominio y ubicación de la aplicación.

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

Habilitar el host virtual de Canvas

$ sudo a2ensite canvas
$ systemctl reload apache2 

En este punto debería poder acceder a Canvas a través del navegador. Abra su navegador y escriba el nombre de dominio especificado en Nombre del servidor. Debería aparecer la página de inicio de sesión predeterminada de Canvas.

canvas lms login page after successful canvas installation
Instalación de Canvas LMS completada

 

Otros pasos de configuración de Canvas

Si la página de inicio de sesión de Canvas está cargada en el navegador, es una buena señal. Pero necesitamos completar algunos ajustes más para que el sistema de gestión de aprendizaje Canvas de código abierto esté listo para producción.

Instalar certificado SSL para 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.

Ejecute las siguientes instrucciones en la línea de comando de la máquina para asegurarse de tener la última versión de snapd.

sudo snap install core; sudo snap refresh core

Elimine certbot-auto y cualquier paquete de Certbot OS

sudo apt-get remove certbot

Instalar Certbot

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

Instale el certificado SSL para Canvas usando 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 certificado SSL para Canvas está instalado

Instalar el servidor de caché 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

Luego regrese al directorio de códigos de Canvas y edite los archivos de configuración de Redis.

vim config/cache_store.yml

Agregue las siguientes líneas al archivo:

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

Ahora edite el archivo redis.yml y establezca la ruta al servidor redis allí.

vim config/redis.yml

Si Redis está instalado en el mismo servidor que Canvas, entonces su configuración debería ser algo como esto. Reemplace localhost con la IP del servidor redis si instaló redis en un servidor externo.

production:
  servers:
    - redis://localhost

Guarde el archivo de configuración y reinicie Canvas para aplicar los cambios.

Instalar QTIMigrationTool para Canvas

Empleos de Configurar Canvas Automatizado

Los trabajos automatizados de Canvas deben estar ejecutándose para generar informes, enviar correos electrónicos, etc. Los siguientes comandos configurarán e iniciarán los trabajos retrasados 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

Instale la API RCE para el editor de contenido enriquecido

Solución de problemas de errores de instalación de Canvas

1. La aplicación encontró el siguiente error: Ya activó strscan 3.0.1, pero su Gemfile requiere strscan 3.0.6. Dado que strscan es una gema predeterminada, puede eliminar su dependencia de ella o intentar actualizar a una versión más nueva del paquete que admita strscan como gema predeterminada. (Gema::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éditos

  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