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