Jak zainstalować Canvas LMS na Ubuntu 22.04

Instalacja Canvas LMS jest łatwa, jeśli zrobiłeś to wcześniej. Ale po raz pierwszy może to być trudne. Jeśli po raz pierwszy próbujesz zainstalować Canvas LMS, koniecznie przeczytaj niniejszą instrukcję instalacji Canvas LMS. W środku znajdziesz wiele przydatnych wskazówek, które pomogą Ci skonfigurować serwer produkcyjny Canvas LMS.

W tym przewodniku użyjemy a Serwer VPS z Ubuntu 22.04 LTS 64-bitowy. Serwer posiada 8 GB pamięci RAM i 4 rdzenie procesora. Spełnia minimalne wymagania sprzętowe dla open source Canvas LMS. Nie zalecamy instalowania Canvas na sprzęcie o niższych specyfikacjach, ponieważ instalacja może się nie powieść. Nie zalecamy również używania systemu operacyjnego innego niż Ubuntu. Instalacja Canvas LMS w systemie Windows nie jest obsługiwana.

Zanim rozpoczniesz instalację, sprawdź nasze Usługa hostingowa Canvas LMS. Usługa oferuje zarządzane serwery w chmurze z preinstalowanym oprogramowaniem Canvas LMS o otwartym kodzie źródłowym. Możesz rozpocząć korzystanie z LMS bez konieczności konfigurowania własnych serwerów i zarządzania nimi.

Kroki instalacji systemu Canvas LMS

Zaktualizuj system

Przede wszystkim powinniśmy zaktualizować serwer i pakiety do najnowszej wersji.

# sudo apt update && apt upgrade -y

Zainstaluj serwer bazy danych PostgreSQL

Następnie instalujemy i konfigurujemy serwer bazy danych PostgreSQL. Kiedy piszę ten artykuł, postgresql-14 jest dostępny.

# 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

Pobierz kod Canvas na serwer

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

# sudo apt install git-core

Na tym etapie utworzymy osobnego użytkownika systemowego dla aplikacji Canvas LMS. Pobierzemy kod Canvas i zainstalujemy go pod tym kontem.

# 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

Zainstaluj zależności 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

Zainstaluj Rubiego 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++

Zainstaluj 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

Zainstaluj 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

Zainstaluj przędzę

# sudo npm -g install yarn

Zainstaluj zależności NodeJS

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

Skonfiguruj Canvas LMS

Skopiuj domyślne pliki konfiguracyjne 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

Edytuj pliki konfiguracyjne i wprowadź odpowiednie ustawienia bazy danych, ustawienia domeny, ustawienia serwera poczty wychodzącej itp.

$ 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

Wypełnij bazę danych Canvas

Uruchom db:initial_setup, aby utworzyć tabele bazy danych i zapełnić bazę danych początkowymi danymi. Na tym etapie zostaniesz poproszony o utworzenie użytkownika administratora 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

Generuj zasoby

Uruchom canvas:compile_assets, aby wygenerować pliki szablonów.

$ 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

Zainstaluj serwer WWW Apache i Pasażera

Następnie potrzebujemy serwera WWW do obsługi Canvas. Najpopularniejsze opcje to Nginx i Apache. Na potrzeby tego przewodnika zainstalujemy 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

Włącz moduł Passenger Apache i zrestartuj Apache.

sudo a2enmod passenger
sudo apache2ctl restart

Sprawdź poprawność instalacji libapache2-mod-passenger. Uruchom poniższe polecenia, aby upewnić się, że moduł pasażerski i libapache2-mod-passenger są poprawnie zainstalowane.

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

Dodatkowo włącz mod_rewrite i mod_ssl dla Apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Skonfiguruj Canvas VirtualHost w Apache

Wyłącz domyślny plik konfiguracyjny wirtualnego hosta Apache i utwórz plik konfiguracyjny wirtualnego hosta dla aplikacji kanwy.

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

Skopiuj poniższą konfigurację do pliku konfiguracyjnego wirtualnego hosta Canvas. Wymień NazwaSerwera, Alias Serwera, Administrator Serwera, Katalog Główny Dokumentu i inne ustawienia zgodne z nazwą Twojej domeny i lokalizacją aplikacji.

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

Włącz wirtualnego hosta Canvas

$ sudo a2ensite canvas
$ systemctl reload apache2 

W tym momencie powinieneś mieć dostęp do Canvas poprzez przeglądarkę. Otwórz przeglądarkę i wpisz nazwę domeny, która została określona w Nazwa Serwera. Powinna pojawić się domyślna strona logowania Canvas.

canvas lms login page after successful canvas installation
Instalacja Canvas LMS została ukończona

 

Dalsze kroki konfiguracji płótna

Jeśli w przeglądarce załadowana jest strona logowania Canvas, jest to dobry znak. Musimy jednak wprowadzić jeszcze kilka poprawek, aby system zarządzania nauką Canvas o otwartym kodzie źródłowym był gotowy do użycia w środowisku produkcyjnym.

Zainstaluj certyfikat SSL dla 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.

Wykonaj poniższe instrukcje w wierszu poleceń na komputerze, aby upewnić się, że masz najnowszą wersję snapd.

sudo snap install core; sudo snap refresh core

Usuń certbot-auto i wszelkie pakiety systemu operacyjnego Certbot

sudo apt-get remove certbot

Zainstaluj Certbota

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

Zainstaluj certyfikat SSL dla Canvas za 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
Certyfikat SSL dla Canvas jest zainstalowany

Zainstaluj serwer pamięci podręcznej 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

Następnie wróć do katalogu kodu Canvas i edytuj pliki konfiguracyjne Redis.

vim config/cache_store.yml

Dodaj poniższe linie do pliku:

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

Teraz edytuj plik redis.yml i ustaw tam ścieżkę do serwera Redis.

vim config/redis.yml

Jeśli Redis jest zainstalowany na tym samym serwerze co Canvas, konfiguracja powinna wyglądać mniej więcej tak. Zastąp localhost adresem IP serwera Redis, jeśli zainstalowałeś Redis na serwerze zewnętrznym.

production:
  servers:
    - redis://localhost

Zapisz plik konfiguracyjny i uruchom ponownie Canvas, aby zastosować zmiany.

Zainstaluj narzędzie QTIMigrationTool dla Canvas

Skonfiguruj kanwę Zautomatyzowane zadania

Powinny być uruchomione automatyczne zadania Canvas, aby generować raporty, wysyłać e-maile itp. Kolejne polecenia skonfigurują i uruchomią opóźnione zadania 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

Zainstaluj interfejs API RCE dla edytora treści bogatych

Rozwiązywanie problemów z błędami instalacji kanwy

1. Aplikacja napotkała następujący błąd: Aktywowałeś już strscan 3.0.1, ale Twój Gemfile wymaga strscan 3.0.6. Ponieważ strscan jest domyślnym klejnotem, możesz albo usunąć swoją zależność od niego, albo spróbować zaktualizować do nowszej wersji pakietu, który obsługuje strscan jako domyślny klejnot. (Klejnot::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.

Kredyty

  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