كيفية تثبيت Canvas LMS على Ubuntu 22.04

يعد تثبيت Canvas LMS أمرًا سهلاً إذا قمت بذلك من قبل. ولكن للمرة الأولى قد يكون الأمر صعبا. إذا كانت هذه هي المرة الأولى التي تحاول فيها تثبيت Canvas LMS، فأنت بالتأكيد بحاجة إلى قراءة دليل تثبيت Canvas LMS هذا. ستجد في الداخل الكثير من النصائح المفيدة التي ستساعدك على إعداد خادم إنتاج Canvas LMS.

في هذا الدليل سوف نستخدم أ الخادم الافتراضي الخاص مع أوبونتو 22.04 LTS 64 بت. يحتوي الخادم على 8 جيجابايت من ذاكرة الوصول العشوائي و 4 نوى لوحدة المعالجة المركزية. إنه يلبي الحد الأدنى من متطلبات الأجهزة لنظام Canvas LMS مفتوح المصدر. لا نوصي بتثبيت Canvas على الأجهزة ذات المواصفات الأقل حيث قد يفشل التثبيت. لا نوصي أيضًا باستخدام نظام تشغيل آخر غير 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

تثبيت روبي 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

تكوين قماش 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 والركاب

بعد ذلك نحتاج إلى خادم ويب لخدمة 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 الافتراضي وقم بإنشاء ملف تكوين Virtualhost لتطبيق اللوحة القماشية.

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

انسخ التكوين أدناه إلى ملف تكوين Canvas virtualhost. يستبدل اسم الخادم، 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 في المتصفح، فهذه علامة جيدة. لكننا بحاجة إلى إكمال بعض التعديلات الإضافية لجعل نظام إدارة التعلم 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

قم بتثبيت سيرتبوت

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

وظائف الإعداد التلقائي للقماش

يجب تشغيل وظائف 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 عبارة عن جوهرة افتراضية، فيمكنك إما إزالة اعتمادك عليها أو محاولة التحديث إلى إصدار أحدث من المجمع الذي يدعم strscan كجوهرة افتراضية. (الجوهرة::خطأ في التحميل)

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