Kako instalirati Canvas LMS na Ubuntu 24.04 / 26.04 LTS

Instalacija Canvas LMS-a je jednostavna ako ste to već radili. No, prvi put može biti teška. Ako ovo radite prvi put, definitivno trebate pročitati ovaj vodič za instalaciju Canvas LMS-a. Unutra ćete pronaći mnogo korisnih savjeta koji će vam pomoći da postavite produkcijski poslužitelj Canvas LMS-a.

Za ovaj vodič koristit ćemo VPS s Ubuntu 24.04 LTS 64 bit. Poslužitelj ima 8 GB RAM-a i 4 CPU jezgre. Ispunjava minimalne hardverske zahtjeve za open source Canvas LMS. Ne preporučujemo instalaciju Canvasa na hardveru s nižim specifikacijama jer instalacija može propasti. Također ne preporučujemo korištenje operativnog sustava osim Ubuntu. Instalacija Canvas LMS-a na Windows nije podržana.

Prije nego što započnete instalaciju, provjerite naš Canvas LMS usluga hostinga. Usluga nudi upravljane cloud poslužitelje s unaprijed instaliranim open-source Canvas LMS-om. Možete početi koristiti LMS bez gnjavaže oko postavljanja i upravljanja vlastitim poslužiteljima.

Koraci za instalaciju Canvas LMS-a

Ažurirajte sustav

Prvo bismo trebali ažurirati poslužitelj i pakete na najnoviju verziju.

# sudo apt update && apt upgrade -y

Instalirajte PostgreSQL poslužitelj baze podataka

Sljedeće instaliramo i konfiguriramo PostgreSQL poslužitelj baze podataka. Kada pišem ovaj članak, postgresql-14 je dostupan.

# 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

Preuzmite Canvas kod na poslužitelj

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

# sudo apt install git-core

U ovom koraku ćemo stvoriti zasebnog sistemskog korisnika za Canvas LMS aplikaciju. Preuzeti ćemo Canvas kod i instalirati ga pod ovim računom.

# 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

Instalirajte Canvas LMS ovisnosti

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

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

Instalirajte 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

Instalirajte Bundler i 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

Instalirajte Yarn

# sudo npm -g install yarn

Instalirajte NodeJS ovisnosti

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

Konfigurirajte Canvas LMS

Kopirajte zadane konfiguracijske datoteke Canvas-a:

$ 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

Uredite konfiguracijske datoteke i unesite relevantne postavke baze podataka, postavke domene, postavke izlaznog mail poslužitelja itd.

$ 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

Popunite Canvas bazu podataka

Pokrenite db:initial_setup za kreiranje tablica baze podataka i popunjavanje baze podataka s početnim podacima. Na ovom koraku bit ćete zamoljeni da kreirate Canvas administratorskog korisnika.

$ 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

Generirajte resurse

Pokrenite canvas:compile_assets za generiranje datoteka predložaka.

$ 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

Instalirajte Apache web poslužitelj i Passenger

Sljedeće nam treba web poslužitelj za posluživanje Canvasa. Nginx i Apache su najpopularnije opcije. U ovom vodiču ćemo instalirati 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

Omogućite Passenger Apache modul i ponovo pokrenite Apache.

sudo a2enmod passenger
sudo apache2ctl restart

Potvrdite instalaciju libapache2-mod-passenger. Pokrenite dolje navedene naredbe kako biste osigurali da su passenger i libapache2-mod-passenger modul ispravno instalirani.

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

Dodatno omogućite mod_rewrite i mod_ssl za apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Konfigurirajte Canvas VirtualHost u Apacheu

Onemogućite zadanu konfiguracijsku datoteku Apache virtualhost i kreirajte konfiguracijsku datoteku virtualhost za canvas aplikaciju.

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

Kopirajte konfiguraciju u nastavku u konfiguracijsku datoteku Canvas virtualhost. Zamijenite ServerName, ServerAlias, ServerAdmin, DocumentRoot i ostale postavke kako bi odgovarale vašem imenu domene i lokaciji aplikacije.

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

Omogućite Canvas virtual host

$ sudo a2ensite canvas
$ systemctl reload apache2 

U ovom trenutku trebali biste moći pristupiti Canvasu putem preglednika. Otvorite svoj preglednik i upišite naziv domene koji je naveden u ServerName. Zadana stranica za prijavu na Canvas trebala bi se pojaviti.

canvas lms login page after successful canvas installation
Instalacija Canvas LMS-a je završena

 

Daljnji koraci postavljanja Canvasa

Ako se stranica za prijavu na Canvas učitala u pregledniku, to je dobar znak. No, trebamo dovršiti još nekoliko prilagodbi kako bismo otvoreni izvorni sustav za upravljanje učenjem Canvas pripremili za proizvodnju.

Instalirajte SSL certifikat za 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.

Izvršite sljedeće upute na naredbenoj liniji na računalu kako biste osigurali da imate najnoviju verziju snapd-a.

sudo snap install core; sudo snap refresh core

Uklonite certbot-auto i sve Certbot OS pakete

sudo apt-get remove certbot

Instalirajte Certbot

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

Instalirajte SSL certifikat za Canvas koristeći 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
SSL certifikat za Canvas je instaliran

Instalirajte Redis cache poslužitelj

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

Zatim se vratite u direktorij s kodom Canvas i uredite konfiguracijske datoteke za redis.

vim config/cache_store.yml

Dodajte sljedeće retke u datoteku:

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

Sada uredite datoteku redis.yml i postavite putanju do redis poslužitelja.

vim config/redis.yml

Ako je Redis instaliran na istom poslužitelju kao Canvas, tada bi vaša konfiguracija trebala izgledati ovako. Zamijenite localhost s IP adresom redis poslužitelja ako ste instalirali redis na vanjskom poslužitelju.

production:
  servers:
    - redis://localhost

Spremite konfiguracijsku datoteku i ponovno pokrenite Canvas kako biste primijenili promjene.

Instalirajte QTIMigrationTool za Canvas

Postavite automatizirane poslove Canvas

Automatizirani poslovi Canvas trebaju biti pokrenuti kako bi generirali izvještaje, slali e-poštu itd. Sljedeće naredbe će konfigurirati i pokrenuti odgođene poslove 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

Instalirajte RCE API za Rich Content Editor

Rješavanje problema s instalacijom Canvasa

1. Aplikacija je naišla na sljedeću pogrešku: Već ste aktivirali strscan 3.0.1, ali vaš Gemfile zahtijeva strscan 3.0.6. Budući da je strscan zadani gem, možete ili ukloniti svoju ovisnost o njemu ili pokušati ažurirati na noviju verziju bundlera koja podržava strscan kao zadani gem. (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.

Zasluge

  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