Ako nainštalovať Canvas LMS na Ubuntu 22.04

Inštalácia Canvas LMS je jednoduchá, ak ste to urobili predtým. Ale prvýkrát to môže byť ťažké. Ak sa pokúšate nainštalovať Canvas LMS prvýkrát, určite si musíte prečítať túto príručku inštalácie Canvas LMS. Vnútri nájdete množstvo užitočných tipov, ktoré vám pomôžu nastaviť produkčný server Canvas LMS.

Pre túto príručku použijeme a VPS s Ubuntu 22.04 LTS 64 bit. Server má 8 GB RAM a 4 CPU jadrá. Spĺňa minimálne hardvérové ​​požiadavky pre open source Canvas LMS. Neodporúčame inštalovať Canvas na hardvér s nižšími špecifikáciami, pretože inštalácia môže zlyhať. Neodporúčame tiež používať iný OS ako Ubuntu. Inštalácia Canvas LMS v systéme Windows nie je podporovaná.

Pred začatím inštalácie si pozrite naše Hostingová služba Canvas LMS. Služba ponúka spravované cloudové servery s predinštalovaným open source Canvas LMS. LMS môžete začať používať bez problémov s nastavovaním a správou vlastných serverov.

Postup inštalácie LMS plátna

Aktualizujte systém

Najprv by sme mali aktualizovať server a balíky na najnovšiu verziu.

# sudo apt update && apt upgrade -y

Nainštalujte databázový server PostgreSQL

Ďalej nainštalujeme a nakonfigurujeme databázový server PostgreSQL. Keď píšem tento článok, postgresql-14 je k dispozícii.

# 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

Stiahnite 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 vytvoríme samostatného používateľa systému pre aplikáciu Canvas LMS. Stiahneme si Canvas kód a nainštalujeme ho pod týmto účtom.

# 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

Nainštalujte 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

Nainštalujte 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++

Nainštalujte 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

Nainštalujte si 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

Nainštalujte priadzu

# sudo npm -g install yarn

Nainštalujte závislosti NodeJS

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

Konfigurácia Canvas LMS

Kopírovať predvolené konfiguračné súbory 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é súbory a zadajte príslušné nastavenia databázy, nastavenia domény, nastavenia servera odchádzajúcej pošty atď.

$ 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

Vyplňte databázu plátna

Spustite db:initial_setup na vytvorenie databázových tabuliek a naplnenie databázy počiatočnými údajmi. V tomto kroku sa zobrazí výzva na vytvorenie používateľa správcu 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

Generovať aktíva

Spustite príkaz canvas:compile_assets a vygenerujte súbory šablón.

$ 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

Nainštalujte webový server Apache a Passenger

Ďalej potrebujeme webový server, ktorý bude slúžiť Canvasu. Nginx a Apache sú najobľúbenejšie možnosti. Pre túto príručku nainštalujeme 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

Povoľte modul Passenger Apache a reštartujte Apache.

sudo a2enmod passenger
sudo apache2ctl restart

Overte inštaláciu libapache2-mod-passenger. Spustite príkazy nižšie, aby ste sa uistili, že modul pre cestujúcich a libapache2-mod-passenger sú správne nainštalované.

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

Okrem toho povoľte mod_rewrite a mod_ssl pre Apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Nakonfigurujte Canvas VirtualHost v Apache

Zakážte predvolený konfiguračný súbor virtuálneho hostiteľa Apache a vytvorte konfiguračný súbor virtuálneho hostiteľa pre aplikáciu canvas.

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

Skopírujte konfiguráciu nižšie do konfiguračného súboru Canvas virtualhost. Nahradiť ServerName, ServerAlias, ServerAdmin, DocumentRoot a ďalšie nastavenia, aby zodpovedali názvu vašej domény a umiestneniu aplikácie.

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

Povoliť virtuálneho hostiteľa Canvas

$ sudo a2ensite canvas
$ systemctl reload apache2 

V tomto bode by ste mali mať prístup k Canvas cez prehliadač. Otvorte prehliadač a zadajte názov domény, ktorý ste zadali ServerName. Mala by sa zobraziť predvolená prihlasovacia stránka plátna.

canvas lms login page after successful canvas installation
Inštalácia Canvas LMS je dokončená

 

Ďalšie kroky nastavenia plátna

Ak sa v prehliadači načíta prihlasovacia stránka Canvas, je to dobré znamenie. Potrebujeme však dokončiť niekoľko ďalších vylepšení, aby bol systém správy učenia Canvas s otvoreným zdrojom pripravený na produkciu.

Nainštalujte certifikát SSL pre 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.

Vykonajte nasledujúce pokyny v príkazovom riadku na počítači, aby ste sa uistili, že máte najnovšiu verziu snapd.

sudo snap install core; sudo snap refresh core

Odstráňte certbot-auto a všetky balíky operačného systému Certbot

sudo apt-get remove certbot

Nainštalujte Certbot

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

Nainštalujte certifikát SSL pre Canvas pomocou 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
Certifikát SSL pre Canvas je nainštalovaný

Nainštalujte server vyrovnávacej pamäte 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

Potom sa vráťte do adresára Canvas code a upravte konfiguračné súbory redis.

vim config/cache_store.yml

Do súboru pridajte riadky nižšie:

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

Teraz upravte súbor redis.yml a nastavte tam cestu k serveru redis.

vim config/redis.yml

Ak je Redis nainštalovaný na rovnakom serveri ako Canvas, vaša konfigurácia by mala byť približne takáto. Ak ste nainštalovali redis na externý server, nahraďte localhost IP servera redis.

production:
  servers:
    - redis://localhost

Uložte konfiguračný súbor a reštartujte Canvas, aby ste použili zmeny.

Nainštalujte QTIMigrationTool pre Canvas

Nastavenie automatických úloh Canvas

Automatizované úlohy Canvas by mali byť spustené, aby bolo možné generovať správy, odosielať e-maily atď. Ďalšie príkazy nakonfigurujú a spustia oneskorené ú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

Nainštalujte RCE API pre editor bohatého obsahu

Riešenie problémov pri inštalácii plátna

1. Aplikácia zaznamenala nasledujúcu chybu: Už ste aktivovali strscan 3.0.1, ale váš Gemfile vyžaduje strscan 3.0.6. Keďže strscan je predvolený drahokam, môžete buď odstrániť svoju závislosť na ňom, alebo sa pokúsiť aktualizovať na novšiu verziu balíka, ktorý podporuje strscan ako predvolený 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