Hur man installerar Canvas LMS på Ubuntu 22.04

Canvas LMS-installation är enkel om du gjorde det tidigare. Men för första gången kan det bli tufft. Om det här är första gången du försöker installera Canvas LMS måste du definitivt läsa denna installationsguide för Canvas LMS. Inuti hittar du massor av användbara tips som hjälper dig att ställa in Canvas LMS produktionsserver.

För denna guide kommer vi att använda en VPS med Ubuntu 22.04 LTS 64 bitar. Servern har 8 GB RAM och 4 CPU-kärnor. Den uppfyller minimala hårdvarukrav för Canvas LMS med öppen källkod. Vi rekommenderar inte att du installerar Canvas på hårdvara med lägre specifikationer eftersom installationen kan misslyckas. Vi rekommenderar inte heller att använda andra operativsystem än Ubuntu. Canvas LMS-installation på Windows stöds inte.

Innan du påbörjar installationen kolla in vår Canvas LMS-värdtjänst. Tjänsten erbjuder hanterade molnservrar med öppen källkod Canvas LMS förinstallerat. Du kan börja använda LMS utan att behöva konfigurera och hantera egna servrar.

Canvas LMS installationssteg

Uppdatera systemet

Först och främst bör vi uppdatera servern och paketen till den senaste versionen.

# sudo apt update && apt upgrade -y

Installera PostgreSQL databasserver

Därefter installerar och konfigurerar vi PostgreSQL-databasservern. När jag skriver den här artikeln är postgresql-14 tillgänglig.

# 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

Ladda ner Canvas-kod till servern

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

# sudo apt install git-core

I det här steget kommer vi att skapa en separat systemanvändare för Canvas LMS-applikation. Vi kommer att ladda ner Canvas-kod och installera den under detta konto.

# 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

Installera Canvas LMS-beroenden

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

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

Installera 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

Installera Bundler och 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

Installera garn

# sudo npm -g install yarn

Installera NodeJS-beroenden

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

Konfigurera Canvas LMS

Kopiera Canvas standardkonfigurationsfiler:

$ 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

Redigera konfigurationsfiler och ange relevanta databasinställningar, domäninställningar, serverinställningar för utgående e-post etc.

$ 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

Fyll i Canvas-databas

Kör db:initial_setup för att skapa databastabeller och fylla i databasen med initiala data. I det här steget blir du ombedd att skapa Canvas-administratörsanvändare.

$ 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

Generera tillgångar

Kör canvas:compile_assets för att generera mallfiler.

$ 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

Installera Apache webbserver och Passenger

Därefter behöver vi en webbserver för att tjäna Canvas. Nginx och Apache är de mest populära alternativen. Vi kommer att installera Apache Passenger för den här guiden.

$ 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

Aktivera Passenger Apache-modulen och starta om Apache.

sudo a2enmod passenger
sudo apache2ctl restart

Validera libapache2-mod-passager installationen. Kör kommandon nedan för att se till att passagerar- och libapache2-mod-passagerarmodulen är korrekt installerade.

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

Aktivera dessutom mod_rewrite och mod_ssl för apache.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Konfigurera Canvas VirtualHost i Apache

Inaktivera standardkonfigurationsfilen för Apache virtualhost och skapa en virtualhost-konfigurationsfil för canvasapplikationen.

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

Kopiera konfigurationen nedan till Canvas virtualhost-konfigurationsfil. Byt ut Servernamn, ServerAlias, ServerAdmin, DocumentRoot och andra inställningar som matchar ditt domännamn och appens plats.

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

Aktivera Canvas virtuell värd

$ sudo a2ensite canvas
$ systemctl reload apache2 

Vid det här laget bör du kunna komma åt Canvas via webbläsaren. Öppna din webbläsare och skriv in ett domännamn som specificerades i Servernamn. Canvas standardinloggningssida bör visas.

canvas lms login page after successful canvas installation
Canvas LMS-installation slutförd

 

Ytterligare Canvas-installationssteg

Om Canvas inloggningssida laddas i webbläsaren är detta ett gott tecken. Men vi behöver göra några fler justeringar för att göra Canvas-hanteringssystemet för lärande med öppen källkod redo för produktion.

Installera SSL-certifikat för 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.

Utför följande instruktioner på kommandoraden på maskinen för att säkerställa att du har den senaste versionen av snapd.

sudo snap install core; sudo snap refresh core

Ta bort certbot-auto och eventuella Certbot OS-paket

sudo apt-get remove certbot

Installera Certbot

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

Installera SSL-certifikat för Canvas med 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 för Canvas är installerat

Installera Redis cacheserver

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

Gå sedan tillbaka till Canvas-kodkatalogen och redigera redis-konfigurationsfiler.

vim config/cache_store.yml

Lägg till rader nedan i filen:

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

Redigera nu filen redis.yml och ställ in sökvägen till redis-servern där.

vim config/redis.yml

Om Redis är installerat på samma server som Canvas bör din konfiguration vara ungefär så här. Ersätt localhost med redis server IP om du installerade redis på extern server.

production:
  servers:
    - redis://localhost

Spara konfigurationsfilen och starta om Canvas för att tillämpa ändringar.

Installera QTIMigrationTool för Canvas

Konfigurera Canvas Automated-jobb

Canvas automatiserade jobb bör köras för att generera rapporter, skicka e-post etc. Nästa kommandon kommer att konfigurera och starta Canvas fördröjda jobb.

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

Installera RCE API för Rich Content Editor

Felsökning av Canvas installationsfel

1. Programmet stötte på följande fel: Du har redan aktiverat strscan 3.0.1, men din Gemfile kräver strscan 3.0.6. Eftersom strscan är en standardpärla, kan du antingen ta bort ditt beroende av den eller prova att uppdatera till en nyare version av bundler som stöder strscan som standardpärla. (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.

Krediter

  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