Jak nainstalovat Canvas LMS na Ubuntu 22.04

Instalace Canvas LMS je snadná, pokud jste ji provedli dříve. Ale poprvé to může být těžké. Pokud je to poprvé, co se pokoušíte nainstalovat Canvas LMS, určitě si musíte přečíst tuto instalační příručku Canvas LMS. Uvnitř najdete spoustu užitečných tipů, které vám pomohou nastavit produkční server Canvas LMS.

Pro tento návod použijeme a VPS s Ubuntu 22.04 LTS 64bit. Server má 8 GB RAM a 4 CPU jádra. Splňuje minimální hardwarové požadavky pro open source Canvas LMS. Nedoporučujeme instalovat Canvas na hardware s nižšími specifikacemi, protože instalace může selhat. Také nedoporučujeme používat jiný OS než Ubuntu. Instalace Canvas LMS v systému Windows není podporována.

Než začnete s instalací, podívejte se na naše Hostingová služba Canvas LMS. Služba nabízí spravované cloudové servery s předinstalovaným open source Canvas LMS. LMS můžete začít používat, aniž byste se museli obtěžovat nastavováním a správou vlastních serverů.

Kroky instalace Canvas LMS

Aktualizujte systém

Nejprve bychom měli aktualizovat server a balíčky na nejnovější verzi.

# sudo apt update && apt upgrade -y

Nainstalujte databázový server PostgreSQL

Dále nainstalujeme a nakonfigurujeme databázový server PostgreSQL. Když píšu tento článek, postgresql-14 je k dispozici.

# 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

Stáhněte si Canvas kód na server

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

# sudo apt install git-core

V tomto kroku vytvoříme samostatného systémového uživatele pro aplikaci Canvas LMS. Stáhneme si Canvas kód a nainstalujeme jej pod tímto účtem.

# 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

Nainstalujte závislosti 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

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

Nainstalujte 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

Nainstalujte Bundler a 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

Nainstalujte přízi

# sudo npm -g install yarn

Nainstalujte závislosti NodeJS

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

Konfigurace Canvas LMS

Kopírovat výchozí konfigurační soubory 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

Upravte konfigurační soubory a zadejte příslušná nastavení databáze, nastavení domény, nastavení serveru odchozí pošty atd.

$ 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

Naplnit databázi plátna

Spusťte db:initial_setup pro vytvoření databázových tabulek a naplnění databáze počátečními daty. V tomto kroku budete požádáni o vytvoření uživatele správce 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

Generovat aktiva

Spuštěním canvas:compile_assets vygenerujte soubory šablon.

$ 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

Nainstalujte webový server Apache a Passenger

Dále potřebujeme webový server, který bude sloužit Canvasu. Nginx a Apache jsou nejoblíbenější možnosti. Pro tuto příručku nainstalujeme Apache Passenger.

$ 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

Povolte modul Passenger Apache a restartujte Apache.

sudo a2enmod passenger
sudo apache2ctl restart

Ověřte instalaci libapache2-mod-passenger. Spusťte níže uvedené příkazy, abyste se ujistili, že jsou modul pro cestující a libapache2-mod-passenger správně nainstalovány.

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

Dále povolte mod_rewrite a mod_ssl pro Apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Nakonfigurujte Canvas VirtualHost v Apache

Zakažte výchozí konfigurační soubor Apache virtualhost a vytvořte konfigurační soubor virtualhost pro aplikaci canvas.

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

Zkopírujte konfiguraci níže do konfiguračního souboru virtuálního hostitele Canvas. Vyměňte ServerName, ServerAlias, ServerAdmin, DocumentRoot a další nastavení, aby odpovídala názvu vaší domény a umístění aplikace.

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

Povolit virtuální hostitele Canvas

$ sudo a2ensite canvas
$ systemctl reload apache2 

V tomto okamžiku byste měli mít přístup k Canvas prostřednictvím prohlížeče. Otevřete prohlížeč a zadejte název domény, který byl zadán v ServerName. Měla by se zobrazit výchozí přihlašovací stránka plátna.

canvas lms login page after successful canvas installation
Instalace Canvas LMS dokončena

 

Další kroky nastavení plátna

Pokud se v prohlížeči načte přihlašovací stránka Canvas, je to dobré znamení. Potřebujeme však dokončit několik dalších úprav, aby byl open source systém pro správu výuky Canvas připraven k produkci.

Nainstalujte certifikát SSL pro 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.

Provedením následujících pokynů na příkazovém řádku na počítači se ujistěte, že máte nejnovější verzi snapdu.

sudo snap install core; sudo snap refresh core

Odeberte certbot-auto a všechny balíčky Certbot OS

sudo apt-get remove certbot

Nainstalujte Certbot

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

Nainstalujte certifikát SSL pro Canvas pomocí certbota

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
SSL certifikát pro Canvas je nainstalován

Nainstalujte server mezipaměti 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

Dále se vraťte do adresáře Canvas code a upravte konfigurační soubory redis.

vim config/cache_store.yml

Přidejte do souboru řádky níže:

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

Nyní upravte soubor redis.yml a nastavte tam cestu k serveru redis.

vim config/redis.yml

Pokud je Redis nainstalován na stejném serveru jako Canvas, pak by vaše konfigurace měla být něco takového. Pokud jste nainstalovali redis na externí server, nahraďte localhost IP serveru redis.

production:
  servers:
    - redis://localhost

Uložte konfigurační soubor a restartujte Canvas, abyste použili změny.

Nainstalujte QTIMigrationTool pro Canvas

Nastavení automatických úloh Canvas

Automatizované úlohy Canvas by měly být spuštěny, aby bylo možné generovat zprávy, odesílat e-maily atd. Další příkazy nakonfigurují a spustí zpožděné úlohy 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

Nainstalujte RCE API pro editor bohatého obsahu

Odstraňování problémů při instalaci plátna

1. Aplikace zaznamenala následující chybu: Již jste aktivovali strscan 3.0.1, ale váš Gemfile vyžaduje strscan 3.0.6. Protože strscan je výchozí drahokam, můžete buď odstranit svou závislost na něm, nebo zkusit aktualizaci na novější verzi bundleru, která podporuje strscan jako výchozí drahokam. (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.

Kredity

  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