sysops install canvas lms on ubuntu 22.04 LTS 64bit

Cómo instalar Canvas LMS en Ubuntu 22.04

La instalación de Canvas LMS es fácil si ya lo has hecho antes. Pero por primera vez puede ser difícil. Si es la primera vez que intentas instalar Canvas LMS entonces definitivamente necesitas 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 64 bit. El servidor tiene 8 GB de RAM y 4 núcleos de CPU. Cumple los requisitos mínimos de hardware para el LMS Canvas de código abierto. No recomendamos instalar Canvas en hardware con especificaciones inferiores, ya que la instalación podría fallar. Tampoco recomendamos utilizar otro sistema operativo que no sea Ubuntu. No se admite la instalación de Canvas LMS en Windows.

Empecemos.

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 bases de datos PostgreSQL. Cuando escribo este artículo postgresql-14 está disponible.

# sudo apt-get install postgresql-14

Añadir base de datos postgresql y un usuario de base de datos para Canvas. Se le pedirá que establezca una contraseña para el usuario de la base de datos canvas.

# sudo -u postgres createuser canvas --no-createdb \
--no-superuser --no-createrole --pwprompt
# sudo -u postgres createdb canvas_production --owner=canvas

Descarga del código Canvas en el servidor

Utilizaremos Git para obtener el código Canvas. Instala Git si aún no lo tienes.

# sudo apt install git-core

En este paso crearemos un usuario de sistema independiente para la aplicación Canvas LMS. Descargaremos el código Canvas y lo instalaremos en esta cuenta.

# useradd --create-home -s /bin/bash canvas
# chmod 711 /home/canvas
# su - canvas

Clona los archivos del repositorio Canvas Github en la carpeta public_html.

$ git clone https://github.com/instructure/canvas-lms.git /home/canvas/public_html
$ cd /home/canvas/public_html
$ git checkout prod

Instalar las dependencias de Canvas LMS

Cambia de nuevo de usuario “canvas” a usuario sudo e instala ruby, Node.js, Bundler, Yarn y otras dependencias de Canvas LMS.

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:instructure/ruby
$ sudo apt-get update

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

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

Copia los archivos de configuración por defecto 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 introduzca los ajustes pertinentes de la base de datos, el dominio, el 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

Rellenar la base de datos Canvas

Ejecute db:initial_setup para crear las tablas de la base de datos y rellenarla con los 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

Active el módulo Passenger Apache y reinicie Apache.

sudo a2enmod passenger
sudo apache2ctl restart

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

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

Adicionalmente 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 virtualhost por defecto de Apache y cree un archivo de configuración virtualhost para la aplicación canvas.

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

Copie la siguiente configuración en el archivo de configuración de Canvas virtualhost. Sustituya ServerName, ServerAlias, ServerAdmin, DocumentRoot y otros ajustes 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 Canvas

$ sudo a2ensite canvas
$ systemctl reload apache2 

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

página de inicio de sesión de canvas lms tras la instalación correcta de canvas
Instalación de Canvas LMS completada

 

Otros pasos de configuración de Canvas

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

Instalar certificado SSL para Canvas

Cuando el nombre de dominio o subdominio de Canvas apunte a la dirección IP del servidor, podemos proceder a instalar el certificado SSL para la aplicación Canvas LMS. Para esta guía instalaremos un certificado SSL gratuito de LetsEncrypt.

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

sudo snap install core; sudo snap refresh core

Eliminar 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

Instalar certificado SSL para Canvas usando certbot

sudo certbot --apache

Cuando el certificado SSL está instalado correctamente, debería ver un icono de candado y el texto “Conexión segura” en un navegador al acceder al URI de Canvas.

El certificado SSL está instalado para Canvas LMS
El certificado SSL para Canvas está instalado

Instalar el servidor de caché Redis

Es una buena idea instalar el servidor de caché Redis para optimizar el rendimiento de Canvas. Se requiere la versión 2.6.x o superior de Redis. Añade el repositorio PPA e instala 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ón, vuelva al directorio de código Canvas y edite los archivos de configuración de redis.

vim config/cache_store.yml

Añade las siguientes líneas en el 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 allí la ruta al servidor redis.

vim config/redis.yml

Si Redis está instalado en el mismo servidor que Canvas, entonces su configuración debería ser algo como esto. Sustituya localhost por la IP del servidor redis si ha instalado 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

Configurar trabajos automatizados de Canvas

Los trabajos automatizados de Canvas deben estar en marcha 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

Instalar RCE API para Rich Content Editor

Solución de errores de instalación de Canvas

1. La aplicación ha encontrado el siguiente error: Ya ha activado 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 reciente de bundler que admita strscan como gema predeterminada. (Gem::LoadError)

Solution: preload Bundler with "PassengerPreloadBundler on" Apache configuration option

2. Errores comunes durante la compilación de activos: FrozenError: no se puede modificar Array congelado

Solution: delete Canvas project folder, download files from Github again and repeat installation steps.

Créditos

  1. Inicio de la producción de Canvas – https://github.com/instructure/canvas-lms/wiki/Production-Start
  2. Instalación de Passenger – https://www.phusionpassenger.com/docs/advanced_guides/install_and_upgrade/apache/install/oss/jammy.html
  3. Servicio de instalación de Canvas LMS – https://www.webhostingzone.org/solutions/canvas-lms-installation.html

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.