Việc cài đặt Canvas LMS thật dễ dàng nếu bạn đã thực hiện việc này trước đây. Nhưng lần đầu tiên có thể sẽ khó khăn. Nếu đây là lần đầu tiên bạn thử cài đặt Canvas LMS thì bạn chắc chắn cần phải đọc hướng dẫn cài đặt Canvas LMS này. Bên trong, bạn sẽ tìm thấy nhiều mẹo hữu ích giúp bạn thiết lập máy chủ sản xuất Canvas LMS.
Đối với hướng dẫn này, chúng tôi sẽ sử dụng một VPS với Ubuntu 22.04 LTS 64bit. Máy chủ có 8GB RAM và 4 lõi CPU. Nó đáp ứng các yêu cầu phần cứng tối thiểu cho Canvas LMS nguồn mở. Chúng tôi khuyên bạn không nên cài đặt Canvas trên phần cứng có thông số kỹ thuật thấp hơn vì quá trình cài đặt có thể không thành công. Chúng tôi cũng không khuyến khích sử dụng hệ điều hành khác ngoài Ubuntu. Cài đặt Canvas LMS trên Windows không được hỗ trợ.
Trước khi bạn bắt đầu cài đặt, hãy kiểm tra Dịch vụ lưu trữ Canvas LMS. Dịch vụ này cung cấp các máy chủ đám mây được quản lý có cài đặt sẵn Canvas LMS nguồn mở. Bạn có thể bắt đầu sử dụng LMS mà không gặp rắc rối khi thiết lập và quản lý máy chủ của riêng mình.
Các bước cài đặt Canvas LMS
Cập nhật hệ thống
Trước hết chúng ta nên cập nhật máy chủ và các gói lên phiên bản mới nhất.
# sudo apt update && apt upgrade -y
Cài đặt máy chủ cơ sở dữ liệu PostgreSQL
Tiếp theo chúng ta cài đặt và cấu hình máy chủ cơ sở dữ liệu PostgreSQL. Khi tôi viết bài này postgresql-14 đã có sẵn.
# 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
Tải mã Canvas về máy chủ
We will use Git to get Canvas code. Install Git if you don’t have it already.
# sudo apt install git-core
Ở bước này, chúng tôi sẽ tạo một người dùng hệ thống riêng cho ứng dụng Canvas LMS. Chúng ta sẽ tải mã Canvas về và cài đặt theo tài khoản này.
# 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
Cài đặt phần phụ thuộc 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
Cài đặt 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++
Cài đặt 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
Cài đặt Bundler và 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
Cài đặt sợi
# sudo npm -g install yarn
Cài đặt phụ thuộc NodeJS
# su - canvas $ cd /home/canvas/public_html $ yarn install
Định cấu hình Canvas LMS
Sao chép tệp cấu hình mặc định của 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
Chỉnh sửa tệp cấu hình và nhập cài đặt cơ sở dữ liệu có liên quan, cài đặt tên miền, cài đặt máy chủ thư đi, v.v.
$ 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
Điền vào cơ sở dữ liệu Canvas
Chạy db:initial_setup để tạo các bảng cơ sở dữ liệu và điền dữ liệu ban đầu vào cơ sở dữ liệu. Ở bước này, bạn sẽ được yêu cầu tạo người dùng quản trị viên 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
Tạo tài sản
Chạy canvas:compile_assets để tạo tệp mẫu.
$ 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
Cài đặt máy chủ web Apache và Hành khách
Tiếp theo chúng ta cần một máy chủ web để phục vụ Canvas. Nginx và Apache là những lựa chọn phổ biến nhất. Chúng tôi sẽ cài đặt Apache Passenger cho hướng dẫn này.
$ 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
Kích hoạt mô-đun Hành khách Apache và khởi động lại Apache.
sudo a2enmod passenger sudo apache2ctl restart
Xác thực cài đặt libapache2-mod-passenger. Chạy các lệnh bên dưới để đảm bảo rằng mô-đun hành khách và libapache2-mod-hành khách được cài đặt chính xác.
sudo /usr/bin/passenger-config validate-install sudo /usr/sbin/passenger-memory-stats
Ngoài ra, hãy bật mod_rewrite và mod_ssl cho apache.
$ sudo a2enmod rewrite $ sudo a2enmod ssl
Định cấu hình Canvas Virtualhost trong Apache
Tắt tệp cấu hình máy chủ ảo Apache mặc định và tạo tệp cấu hình máy chủ ảo cho ứng dụng canvas.
$ sudo unlink /etc/apache2/sites-enabled/000-default.conf $ sudo vim /etc/apache2/sites-available/canvas.conf
Sao chép cấu hình bên dưới vào tệp cấu hình máy chủ ảo Canvas. Thay thế Tên máy chủ, Bí danh máy chủ, ServerAdmin, DocumentRoot và các cài đặt khác để phù hợp với tên miền và vị trí ứng dụng của bạn.
<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>
Bật máy chủ ảo Canvas
$ sudo a2ensite canvas
$ systemctl reload apache2
Tại thời điểm này, bạn sẽ có thể truy cập Canvas thông qua trình duyệt. Mở trình duyệt của bạn và nhập tên miền đã được chỉ định trong Tên máy chủ. Trang đăng nhập mặc định của canvas sẽ xuất hiện.

Các bước thiết lập canvas tiếp theo
Nếu trang đăng nhập Canvas được tải trong trình duyệt thì đây là một dấu hiệu tốt. Tuy nhiên, chúng tôi cần hoàn thiện thêm một số chỉnh sửa nữa để hệ thống quản lý học tập Canvas nguồn mở sẵn sàng đi vào sản xuất.
Cài đặt chứng chỉ SSL cho 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.
Thực hiện các hướng dẫn sau trên dòng lệnh trên máy để đảm bảo rằng bạn có phiên bản snapd mới nhất.
sudo snap install core; sudo snap refresh core
Xóa certbot-auto và mọi gói hệ điều hành Certbot
sudo apt-get remove certbot
Cài đặt Certbot
sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
Cài đặt chứng chỉ SSL cho Canvas bằng 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.

Cài đặt máy chủ bộ đệm 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
Tiếp theo quay lại thư mục mã Canvas và chỉnh sửa các tệp cấu hình redis.
vim config/cache_store.yml
Thêm dòng dưới đây vào tập tin:
test: cache_store: redis_cache_store development: cache_store: redis_cache_store production: cache_store: redis_cache_store
Bây giờ hãy chỉnh sửa tệp redis.yml và đặt đường dẫn đến máy chủ redis ở đó.
vim config/redis.yml
Nếu Redis được cài đặt trên cùng một máy chủ với Canvas thì cấu hình của bạn sẽ giống như thế này. Thay thế localhost bằng IP máy chủ redis nếu bạn đã cài đặt redis trên máy chủ bên ngoài.
production: servers: - redis://localhost
Lưu tệp cấu hình và khởi động lại Canvas để áp dụng các thay đổi.
Cài đặt QTMigrationTool cho Canvas
Thiết lập công việc tự động trên Canvas
Các công việc tự động của Canvas sẽ được chạy để tạo báo cáo, gửi email, v.v. Các lệnh tiếp theo sẽ định cấu hình và bắt đầu các công việc bị trì hoãn của 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
Cài đặt API RCE cho Trình chỉnh sửa nội dung đa dạng thức
Khắc phục lỗi cài đặt Canvas
1. Ứng dụng gặp lỗi sau: Bạn đã kích hoạt strscan 3.0.1 nhưng Gemfile của bạn yêu cầu strscan 3.0.6. Vì strscan là một gem mặc định nên bạn có thể loại bỏ sự phụ thuộc của mình vào nó hoặc thử cập nhật lên phiên bản mới hơn của bộ đóng gói hỗ trợ strscan làm gem mặc định. (Đá quý::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.
Tín dụng
- Canvas Production Start – https://github.com/instructure/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






