Como instalar o Canvas LMS no Ubuntu 22.04

A instalação do Canvas LMS é fácil se você já fez isso antes. Mas pela primeira vez pode ser difícil. Se esta é a primeira vez que você está tentando instalar o Canvas LMS, você definitivamente precisa ler este guia de instalação do Canvas LMS. Dentro você encontrará muitas dicas úteis que o ajudarão a configurar o servidor de produção Canvas LMS.

Para este guia usaremos um VPS com Ubuntu 22.04 LTS 64 bits. O servidor possui 8 GB de RAM e 4 núcleos de CPU. Ele atende aos requisitos mínimos de hardware para o Canvas LMS de código aberto. Não recomendamos a instalação do Canvas em hardware com especificações inferiores, pois a instalação pode falhar. Também não recomendamos usar outro sistema operacional além do Ubuntu. A instalação do Canvas LMS no Windows não é suportada.

Antes de iniciar a instalação confira nosso Serviço de hospedagem Canvas LMS. O serviço oferece servidores em nuvem gerenciados com Canvas LMS de código aberto pré-instalado. Você pode começar a usar o LMS sem o incômodo de configurar e gerenciar servidores próprios.

Etapas de instalação do Canvas LMS

Atualizar o sistema

Primeiro de tudo devemos atualizar o servidor e os pacotes para a versão mais recente.

# sudo apt update && apt upgrade -y

Instale o servidor de banco de dados PostgreSQL

A seguir instalamos e configuramos o servidor de banco de dados PostgreSQL. Quando escrevo este artigo, o postgresql-14 está disponível.

# 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

Baixe o código do Canvas para o servidor

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

# sudo apt install git-core

Nesta etapa criaremos um usuário de sistema separado para o aplicativo Canvas LMS. Faremos o download do código do Canvas e o instalaremos nesta conta.

# 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

Instale dependências do 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

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

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

Instale 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

Instale o fio

# sudo npm -g install yarn

Instale dependências do NodeJS

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

Configurar o Canvas LMS

Copie os arquivos de configuração padrão do 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 os arquivos de configuração e insira as configurações relevantes do banco de dados, configurações de domínio, configurações do servidor de e-mail de saída, 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

Preencher banco de dados Canvas

Execute db:initial_setup para criar tabelas de banco de dados e preencher o banco de dados com dados iniciais. Nesta etapa, você será solicitado a criar um usuário administrador do 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

Gerar ativos

Execute canvas:compile_assets para gerar arquivos de modelo.

$ 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

Instale o servidor web Apache e o Passenger

Em seguida, precisamos de um servidor web para servir o Canvas. Nginx e Apache são as opções mais populares. Vamos instalar o Apache Passenger para este 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

Habilite o módulo Passenger Apache e reinicie o Apache.

sudo a2enmod passenger
sudo apache2ctl restart

Valide a instalação do libapache2-mod-passenger. Execute os comandos abaixo para garantir que o módulo passageiro e libapache2-mod-passenger estejam instalados corretamente.

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

Além disso, habilite mod_rewrite e mod_ssl para Apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Configurar o Canvas VirtualHost no Apache

Desative o arquivo de configuração virtualhost padrão do Apache e crie um arquivo de configuração virtualhost para o aplicativo canvas.

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

Copie a configuração abaixo no arquivo de configuração do Canvas virtualhost. Substituir ServerName, ServerAlias, ServerAdmin, DocumentRoot e outras configurações para corresponder ao seu nome de domínio e localização do aplicativo.

<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 host virtual do Canvas

$ sudo a2ensite canvas
$ systemctl reload apache2 

Neste ponto, você deverá conseguir acessar o Canvas via navegador. Abra seu navegador e digite um nome de domínio que foi especificado em Nome do servidor. A página de login padrão do Canvas deve aparecer.

canvas lms login page after successful canvas installation
Instalação do Canvas LMS concluída

 

Outras etapas de configuração do Canvas

Se a página de login do Canvas estiver carregada no navegador, isso é um bom sinal. Mas precisamos fazer mais alguns ajustes para deixar o sistema de gerenciamento de aprendizagem Canvas de código aberto pronto para produção.

Instale o 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.

Execute as instruções a seguir na linha de comando da máquina para garantir que você tenha a versão mais recente do snapd.

sudo snap install core; sudo snap refresh core

Remova certbot-auto e quaisquer pacotes Certbot OS

sudo apt-get remove certbot

Instale o Certbot

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

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

Instale o servidor de 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

Em seguida, volte ao diretório de código do Canvas e edite os arquivos de configuração do redis.

vim config/cache_store.yml

Adicione as linhas abaixo ao arquivo:

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

Agora edite o arquivo redis.yml e defina o caminho para o servidor redis lá.

vim config/redis.yml

Se o Redis estiver instalado no mesmo servidor que o Canvas, sua configuração deverá ser mais ou menos assim. Substitua localhost pelo IP do servidor redis se você instalou o redis em um servidor externo.

production:
  servers:
    - redis://localhost

Salve o arquivo de configuração e reinicie o Canvas para aplicar as alterações.

Instale QTIMigrationTool para Canvas

Configurar trabalhos automatizados do Canvas

Os trabalhos automatizados do Canvas devem estar em execução para gerar relatórios, enviar e-mails, etc. Os próximos comandos irão configurar e iniciar os trabalhos atrasados do 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 a API RCE para Rich Content Editor

Solução de erros de instalação do Canvas

1. O aplicativo encontrou o seguinte erro: Você já ativou o strscan 3.0.1, mas seu Gemfile requer o strscan 3.0.6. Como strscan é uma gem padrão, você pode remover sua dependência dela ou tentar atualizar para uma versão mais recente do bundler que suporte strscan como uma gem padrão. (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