การติดตั้ง Canvas LMS เป็นเรื่องง่ายหากคุณเคยทำมาก่อน แต่ครั้งแรกมันอาจจะยาก หากนี่เป็นครั้งแรกที่คุณพยายามติดตั้ง Canvas LMS คุณจะต้องอ่านคู่มือการติดตั้ง Canvas LMS นี้อย่างแน่นอน ภายในคุณจะพบเคล็ดลับที่เป็นประโยชน์มากมายที่จะช่วยคุณในการตั้งค่าเซิร์ฟเวอร์การผลิต Canvas LMS
สำหรับคู่มือนี้เราจะใช้ วีพีเอส ด้วย อูบุนตู 22.04 LTS 64 บิต. เซิร์ฟเวอร์มี RAM 8GB และแกน CPU 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
กำหนดค่า 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 เริ่มต้นและสร้างไฟล์การกำหนดค่า virtualhost สำหรับแอปพลิเคชัน Canvas
$ 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 ควรปรากฏขึ้น

ขั้นตอนการตั้งค่า Canvas เพิ่มเติม
หากมีการโหลดหน้าเข้าสู่ระบบ 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
ติดตั้ง 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.

ติดตั้งเซิร์ฟเวอร์แคช 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 การกำหนดค่าของคุณควรเป็นดังนี้ แทนที่ localhost ด้วย IP เซิร์ฟเวอร์ Redis หากคุณติดตั้ง Redis บนเซิร์ฟเวอร์ภายนอก
production: servers: - redis://localhost
บันทึกไฟล์การกำหนดค่าและรีสตาร์ท Canvas เพื่อใช้การเปลี่ยนแปลง
ติดตั้ง QTIMigrationTool สำหรับ Canvas
ตั้งค่างาน 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 สำหรับ Rich Content Editor
การแก้ไขปัญหาข้อผิดพลาดในการติดตั้ง Canvas
1. แอปพลิเคชันพบข้อผิดพลาดต่อไปนี้: คุณได้เปิดใช้งาน strscan 3.0.1 แล้ว แต่ Gemfile ของคุณต้องใช้ strscan 3.0.6 เนื่องจาก strscan เป็นอัญมณีเริ่มต้น คุณสามารถลบการพึ่งพาของคุณออกหรือลองอัปเดตเป็น Bundler เวอร์ชันใหม่กว่าที่รองรับ strscan เป็นอัญมณีเริ่มต้น (อัญมณี::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.
เครดิต
- Canvas Production Start – https://github.com/instruction/canvas-lms/wiki/Production-Start
- Installing Passenger – https://www.phusionpassenger.com/docs/advanced_guides/install_and_upgrade/apache/install/oss/jammy.html
- Canvas LMS Installation Service – https://www.webhostingzone.org/solutions/canvas-lms-installation.html






