Setting up the Canvas LMS system
Introduction
Canvas LMS is a popular open-source learning management system that supports educational institutions in creating and managing their courses online. While powerful, setting up Canvas LMS can sometimes be difficult exercise due to incomplete andunclear documentation. This blog post is designed to provide a clear, comprehensive guide to help you set up Canvas LMS on Linux and macOS systems. Note that Windows users should utilize the Windows Subsystem for Linux (WSL) with a Debian or Ubuntu-based image for optimal results. For detailed instructions, please refer to the Microsoft WSL Installation Guide.
Download and setup instructions for Canvas LMS
Step 1: Download the Canvas LMS Source Code
wget https://github.com/instructure/canvas-lms/archive/refs/heads/master.zip
Step 2: Unzip the Downloaded File
unzip master.zip
Step 3: Rename the extracted folder
mv canvas-lms-master canvas-lms
Step 4: Navigate to the Canvas LMS directory
cd canvas-lms
Step 5: Configure the Docker compose file
Open 'docker-compose.yml'
nano docker-compose.yml
Replace its content with:
# See doc/docker/README.md or https://github.com/instructure/canvas-lms/tree/master/doc/docker
version: '2.3'
services:
web: &WEB
build:
context: .
links:
- postgres
- redis
ports:
- "80"
volumes:
- .:/usr/src/app
- api_docs:/usr/src/app/public/doc/api
- brandable_css_brands:/usr/src/app/app/stylesheets/brandable_css_brands
- bundler:/home/docker/.bundle/
- canvas-docker-gems:/home/docker/.gem/
- js-utils_es:/usr/src/app/packages/js-utils/es
- js-utils_lib:/usr/src/app/packages/js-utils/lib
- js-utils_node_modules:/usr/src/app/packages/js-utils/node_modules
- locales:/usr/src/app/config/locales/generated
- log:/usr/src/app/log
- node_modules:/usr/src/app/node_modules
- pacts:/usr/src/app/pacts
- public_dist:/usr/src/app/public/dist
- reports:/usr/src/app/reports
- styleguide:/usr/src/app/app/views/info
- tmp:/usr/src/app/tmp
- translations:/usr/src/app/public/javascripts/translations
- yardoc:/usr/src/app/.yardoc
- yarn-cache:/home/docker/.cache/yarn
environment:
POSTGRES_PASSWORD: sekret
ENCRYPTION_KEY: facdd3a131ddd8988b14f6e4e01039c93cfa0160
RAILS_ENV: development
jobs:
<<: *WEB
command: bundle exec script/delayed_job run
postgres:
build: ./docker-compose/postgres
environment:
POSTGRES_PASSWORD: sekret
redis:
image: redis:alpine
volumes:
api_docs: {}
brandable_css_brands: {}
bundler: {}
canvas-docker-gems: {}
i18nliner_node_modules: {}
js-utils_es: {}
js-utils_lib: {}
js-utils_node_modules: {}
k5uploader_es: {}
k5uploader_lib: {}
k5uploader_node_modules: {}
locales: {}
log: {}
node_modules: {}
pg_data: {}
pacts: {}
public_dist: {}
reports: {}
styleguide: {}
tmp: {}
translations: {}
yardoc: {}
yarn-cache: {}
Step 6: Remove unnecessary configuration files
rm config/dynamic_settings.yml
Step 7: Copy configuration files
cp docker-compose/config/*.yml config/
Step 8: Build Docker images
docker-compose build --pull
Step 9: Create Docker containers
docker-compose up --no-start web
Step 10: Install necessary assets
docker-compose run --rm web ./script/install_assets.sh
Step 11: Initialize the database
docker-compose run --rm web bundle exec rake db:create db:initial_setup
Step 12: Migrate the database for testing
docker-compose run --rm web bundle exec rake db:migrate RAILS_ENV=test
Step 13: Start all services
docker-compose up -d
Step 14: Verify that the services are running
docker ps
Look for the 'web' service in the output. Note the port mapped to port 80.