Kaip įdiegti „Canvas LMS“ Ubuntu 22.04

Canvas LMS diegimas yra lengvas, jei tai padarėte anksčiau. Bet pirmą kartą tai gali būti sunku. Jei tai pirmas kartas, kai bandote įdiegti Canvas LMS, būtinai turite perskaityti šį Canvas LMS diegimo vadovą. Viduje rasite daug naudingų patarimų, kurie padės nustatyti Canvas LMS gamybos serverį.

Šiam vadovui naudosime a VPS su Ubuntu 22.04 LTS 64 bitai. Serveris turi 8 GB RAM ir 4 procesoriaus branduolius. Jis atitinka minimalius atvirojo kodo Canvas LMS aparatinės įrangos reikalavimus. Nerekomenduojame diegti „Canvas“ žemesnių specifikacijų aparatinėje įrangoje, nes gali nepavykti įdiegti. Taip pat nerekomenduojame naudoti kitos OS nei Ubuntu. Canvas LMS diegimas sistemoje „Windows“ nepalaikomas.

Prieš pradėdami diegti, peržiūrėkite mūsų Canvas LMS prieglobos paslauga. Paslauga siūlo valdomus debesies serverius su iš anksto įdiegta atvirojo kodo Canvas LMS. Galite pradėti naudoti LMS be vargo nustatydami ir tvarkydami savo serverius.

Canvas LMS diegimo žingsniai

Atnaujinkite sistemą

Pirmiausia turėtume atnaujinti serverį ir paketus į naujausią versiją.

# sudo apt update && apt upgrade -y

Įdiekite PostgreSQL duomenų bazės serverį

Toliau įdiegiame ir konfigūruojame PostgreSQL duomenų bazės serverį. Kai rašau šį straipsnį, yra postgresql-14.

# 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

Atsisiųsti drobės kodą į serverį

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

# sudo apt install git-core

Šiame žingsnyje sukursime atskirą sistemos naudotoją Canvas LMS programai. Atsisiųsime „Canvas“ kodą ir įdiegsime jį šioje paskyroje.

# 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

Įdiekite Canvas LMS priklausomybes

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

Įdiekite 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++

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

Įdiekite Bundler ir 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

Įdiekite verpalus

# sudo npm -g install yarn

Įdiekite NodeJS priklausomybes

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

Konfigūruokite Canvas LMS

Kopijuoti Canvas numatytuosius konfigūracijos failus:

$ 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

Redaguokite konfigūracijos failus ir įveskite atitinkamus duomenų bazės parametrus, domeno nustatymus, siunčiamo pašto serverio nustatymus ir kt.

$ 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

Užpildykite Canvas duomenų bazę

Paleiskite db:initial_setup, kad sukurtumėte duomenų bazės lenteles ir užpildytumėte duomenų bazę pradiniais duomenimis. Šiame žingsnyje jūsų bus paprašyta sukurti „Canvas“ administratoriaus vartotoją.

$ 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

Generuokite turtą

Paleiskite canvas:compile_assets, kad sukurtumėte šabloninius failus.

$ 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

Įdiekite „Apache“ žiniatinklio serverį ir „Passenger“.

Toliau mums reikia žiniatinklio serverio, kad galėtume aptarnauti „Canvas“. Nginx ir Apache yra populiariausios parinktys. Šiam vadovui ketiname įdiegti „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

Įjunkite „Passenger Apache“ modulį ir iš naujo paleiskite „Apache“.

sudo a2enmod passenger
sudo apache2ctl restart

Patvirtinkite libapache2-mod-passenger diegimą. Vykdykite toliau pateiktas komandas, kad įsitikintumėte, jog keleivio ir libapache2-mod-passenger modulis yra tinkamai įdiegtas.

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

Papildomai apache įgalinkite mod_rewrite ir mod_ssl.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Konfigūruokite „Canvas VirtualHost“ programoje „Apache“.

Išjunkite numatytąjį Apache virtualhost konfigūracijos failą ir sukurkite virtualios prieglobos konfigūracijos failą drobės programai.

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

Nukopijuokite toliau pateiktą konfigūraciją į Canvas virtualhost konfigūracijos failą. Pakeiskite Serverio pavadinimas, serverio pseudonimas, serverio administratorius, dokumento šaknis ir kitus nustatymus, kad jie atitiktų jūsų domeno pavadinimą ir programos vietą.

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

Įgalinti „Canvas“ virtualųjį prieglobą

$ sudo a2ensite canvas
$ systemctl reload apache2 

Šiuo metu turėtumėte turėti galimybę pasiekti „Canvas“ per naršyklę. Atidarykite naršyklę ir įveskite domeno pavadinimą, kuris buvo nurodytas Serverio pavadinimas. Turėtų pasirodyti numatytasis „Canvas“ prisijungimo puslapis.

canvas lms login page after successful canvas installation
Canvas LMS diegimas baigtas

 

Kiti drobės sąrankos žingsniai

Jei „Canvas“ prisijungimo puslapis įkeltas naršyklėje, tai geras ženklas. Tačiau turime atlikti dar keletą patobulinimų, kad atvirojo kodo „Canvas“ mokymosi valdymo sistema būtų paruošta gamybai.

Įdiekite „Canvas“ skirtą SSL sertifikatą

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.

Įrenginio komandinėje eilutėje vykdykite šias instrukcijas, kad įsitikintumėte, jog turite naujausią snapd versiją.

sudo snap install core; sudo snap refresh core

Pašalinkite certbot-auto ir visus Certbot OS paketus

sudo apt-get remove certbot

Įdiekite Certbot

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

Įdiekite Canvas SSL sertifikatą naudodami 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
Įdiegtas Canvas SSL sertifikatas

Įdiekite Redis talpyklos serverį

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

Tada grįžkite į Canvas kodo katalogą ir redaguokite redis konfigūracijos failus.

vim config/cache_store.yml

Pridėkite toliau pateiktas eilutes į failą:

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

Dabar redaguokite redis.yml failą ir ten nustatykite kelią į redis serverį.

vim config/redis.yml

Jei „Redis“ yra įdiegtas tame pačiame serveryje kaip „Canvas“, jūsų konfigūracija turėtų būti maždaug tokia. Pakeiskite localhost į redis serverio IP, jei įdiegėte redis išoriniame serveryje.

production:
  servers:
    - redis://localhost

Išsaugokite konfigūracijos failą ir iš naujo paleiskite „Canvas“, kad pritaikytumėte pakeitimus.

Įdiekite QTIMigrationTool for Canvas

Nustatyti „Canvas“ automatizuotus darbus

Turėtų būti vykdomos automatizuotos drobės užduotys, kad būtų galima generuoti ataskaitas, siųsti el. laiškus ir pan. Kitos komandos sukonfigūruos ir pradės uždelstus drobės darbus.

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

Įdiekite RCE API, skirtą Rich Content Editor

„Canvas“ diegimo klaidų trikčių šalinimas

1. Programa susidūrė su tokia klaida: Jau suaktyvinote strscan 3.0.1, bet jūsų Gemfile reikalinga strscan 3.0.6. Kadangi strscan yra numatytasis brangakmenis, galite pašalinti savo priklausomybę nuo jo arba pabandyti atnaujinti į naujesnę bundler versiją, kuri palaiko strscan kaip numatytąjį brangakmenį. (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.

Kreditai

  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