როგორ დააინსტალიროთ Canvas LMS Ubuntu 22.04-ზე

Canvas LMS-ის ინსტალაცია მარტივია, თუ ამას ადრე გააკეთებდით. მაგრამ პირველად შეიძლება რთული იყოს. თუ პირველად ცდილობთ დააინსტალიროთ Canvas LMS, აუცილებლად უნდა წაიკითხოთ ეს Canvas LMS ინსტალაციის სახელმძღვანელო. შიგნით ნახავთ უამრავ სასარგებლო რჩევას, რომელიც დაგეხმარებათ დააყენოთ Canvas LMS წარმოების სერვერი.

ამ სახელმძღვანელოსთვის ჩვენ გამოვიყენებთ ა VPS თან Ubuntu 22.04 LTS 64 ბიტიანი. სერვერს აქვს 8 GB ოპერატიული მეხსიერება და 4 CPU ბირთვი. ის აკმაყოფილებს მინიმალურ ტექნიკის მოთხოვნებს ღია კოდის Canvas LMS-ისთვის. ჩვენ არ გირჩევთ Canvas-ის დაყენებას უფრო დაბალი სპეციფიკაციების მქონე მოწყობილობაზე, რადგან ინსტალაცია შეიძლება ვერ მოხერხდეს. ჩვენ ასევე არ გირჩევთ გამოიყენოთ OS გარდა Ubuntu. Canvas LMS ინსტალაცია Windows-ზე არ არის მხარდაჭერილი.

სანამ ინსტალაციას დაიწყებთ, შეამოწმეთ ჩვენი Canvas LMS ჰოსტინგის სერვისი. სერვისი გთავაზობთ მართულ ღრუბლოვან სერვერებს წინასწარ დაინსტალირებული ღია კოდის Canvas LMS-ით. თქვენ შეგიძლიათ დაიწყოთ LMS-ის გამოყენება საკუთარი სერვერების დაყენებისა და მართვის გარეშე.

Canvas LMS ინსტალაციის ნაბიჯები

განაახლეთ სისტემა

უპირველეს ყოვლისა, ჩვენ უნდა განვაახლოთ სერვერი და პაკეტები უახლესი ვერსიით.

# sudo apt update && apt upgrade -y

დააინსტალირეთ PostgreSQL მონაცემთა ბაზის სერვერი

შემდეგ ჩვენ ვაინსტალირებთ და ვაკონფიგურირებთ PostgreSQL მონაცემთა ბაზის სერვერს. როდესაც ვწერ ამ სტატიას, 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

ჩამოტვირთეთ Canvas კოდი სერვერზე

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

# sudo apt install git-core

ამ ეტაპზე ჩვენ შევქმნით ცალკე სისტემის მომხმარებელს Canvas LMS აპლიკაციისთვის. ჩვენ გადმოვწერთ Canvas-ის კოდს და დავაინსტალირებთ ამ ანგარიშის ქვეშ.

# 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

დააინსტალირეთ 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

დააინსტალირეთ 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++

დააინსტალირეთ 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

დააინსტალირეთ Bundler და 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

დააინსტალირეთ ნართი

# sudo npm -g install yarn

დააინსტალირეთ NodeJS დამოკიდებულებები

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

Canvas LMS-ის კონფიგურაცია

დააკოპირეთ 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

შეცვალეთ კონფიგურაციის ფაილები და შეიყვანეთ მონაცემთა ბაზის შესაბამისი პარამეტრები, დომენის პარამეტრები, გამავალი ფოსტის სერვერის პარამეტრები და ა.შ.

$ 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

შეავსეთ Canvas მონაცემთა ბაზა

გაუშვით db:initial_setup, რათა შექმნათ მონაცემთა ბაზის ცხრილები და შეავსოთ მონაცემთა ბაზა საწყისი მონაცემებით. ამ ეტაპზე თქვენ მოგეთხოვებათ შექმნათ 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

აქტივების გენერირება

გაუშვით canvas:compile_assets შაბლონის ფაილების გენერირებისთვის.

$ 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

დააინსტალირეთ Apache ვებ სერვერი და Passenger

შემდეგ ჩვენ გვჭირდება ვებ სერვერი Canvas-ის მოსამსახურებლად. Nginx და Apache ყველაზე პოპულარული ვარიანტებია. ჩვენ ვაპირებთ დააინსტალიროთ 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

ჩართეთ Passenger Apache მოდული და გადატვირთეთ Apache.

sudo a2enmod passenger
sudo apache2ctl restart

დაადასტურეთ libapache2-mod-passenger ინსტალაცია. გაუშვით ქვემოთ მოცემული ბრძანებები, რათა დარწმუნდეთ, რომ სამგზავრო და libapache2-mod-passenger მოდული სწორად არის დაინსტალირებული.

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

დამატებით ჩართეთ mod_rewrite და mod_ssl apache-სთვის.

$ sudo a2enmod rewrite 
$ sudo a2enmod ssl

Canvas VirtualHost-ის კონფიგურაცია Apache-ში

გამორთეთ ნაგულისხმევი Apache virtualhost-ის კონფიგურაციის ფაილი და შექმენით ვირტუალური მასპინძლის კონფიგურაციის ფაილი ტილო აპლიკაციისთვის.

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

დააკოპირეთ ქვემოთ მოცემული კონფიგურაცია Canvas virtualhost-ის კონფიგურაციის ფაილში. ჩანაცვლება ServerName, ServerAlias, ServerAdmin, DocumentRoot და სხვა პარამეტრები, რომლებიც ემთხვევა თქვენი დომენის სახელსა და აპის მდებარეობას.

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

ჩართეთ Canvas ვირტუალური ჰოსტი

$ sudo a2ensite canvas
$ systemctl reload apache2 

ამ ეტაპზე თქვენ უნდა გქონდეთ წვდომა ტილოზე ბრაუზერის საშუალებით. გახსენით თქვენი ბრაუზერი და ჩაწერეთ დომენის სახელი, რომელშიც მითითებულია სერვერის სახელი. Canvas-ის ნაგულისხმევი შესვლის გვერდი უნდა გამოჩნდეს.

canvas lms login page after successful canvas installation
Canvas LMS-ის ინსტალაცია დასრულდა

 

ტილოს დაყენების შემდგომი ნაბიჯები

თუ Canvas-ის შესვლის გვერდი ჩატვირთულია ბრაუზერში, ეს კარგი ნიშანია. მაგრამ ჩვენ გვჭირდება კიდევ რამდენიმე შესწორება, რათა ღია კოდის კანვას სწავლის მართვის სისტემა მზად იყოს წარმოებისთვის.

დააინსტალირეთ SSL სერთიფიკატი 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.

შეასრულეთ შემდეგი ინსტრუქციები აპარატის ბრძანების სტრიქონზე, რათა დარწმუნდეთ, რომ გაქვთ snapd-ის უახლესი ვერსია.

sudo snap install core; sudo snap refresh core

წაშალეთ certbot-auto და ნებისმიერი Certbot OS პაკეტი

sudo apt-get remove certbot

დააინსტალირეთ Certbot

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

დააინსტალირეთ SSL სერთიფიკატი Canvas-ისთვის 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 სერთიფიკატი Canvas-ისთვის

დააინსტალირეთ 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

შემდეგ დაბრუნდით Canvas კოდების დირექტორიაში და დაარედაქტირეთ redis კონფიგურაციის ფაილები.

vim config/cache_store.yml

დაამატეთ ქვემოთ მოცემული ხაზები ფაილში:

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

ახლა შეცვალეთ redis.yml ფაილი და დააყენეთ გზა იქ redis სერვერამდე.

vim config/redis.yml

თუ Redis დაინსტალირებულია იმავე სერვერზე, როგორც Canvas, მაშინ თქვენი კონფიგურაცია უნდა იყოს მსგავსი. შეცვალეთ ლოკალჰოსტი redis სერვერის IP-ით, თუ თქვენ დააინსტალირეთ redis გარე სერვერზე.

production:
  servers:
    - redis://localhost

შეინახეთ კონფიგურაციის ფაილი და გადატვირთეთ Canvas ცვლილებების გამოსაყენებლად.

დააინსტალირეთ QTIMIgrationTool ტილოსთვის

Canvas Automated სამუშაოების დაყენება

Canvas-ის ავტომატიზირებული სამუშაოები უნდა იყოს გაშვებული, რათა გენერიროთ ანგარიშები, გაგზავნოთ ელფოსტა და ა.შ. შემდეგი ბრძანებები დააკონფიგურირებს და დაიწყებს 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

დააინსტალირეთ RCE API მდიდარი კონტენტის რედაქტორისთვის

ტილოზე ინსტალაციის შეცდომების აღმოფხვრა

1. აპლიკაციას შეექმნა შემდეგი შეცდომა: თქვენ უკვე გაააქტიურეთ strscan 3.0.1, მაგრამ თქვენი Gemfile მოითხოვს strscan 3.0.6. ვინაიდან strscan ნაგულისხმევი ძვირფასი ქვაა, შეგიძლიათ ან გააუქმოთ მასზე დამოკიდებულება ან სცადოთ განახლება Bundler-ის უფრო ახალ ვერსიაზე, რომელიც მხარს უჭერს strscan-ს, როგორც ნაგულისხმევ ძვირფას ქვას. (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.

კრედიტები

  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