Difference between revisions of "Canvas Deployment"
Line 183: | Line 183: | ||
== canvas lms build and deployment == | == canvas lms build and deployment == | ||
=== on canvas lms server === | === on canvas lms server === | ||
+ | |||
+ | * mount nfs file share edit file '''/etc/fstab''' | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ sudo apt-get install -y nfs-common | ||
+ | $ sudo vim /etc/fstab | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | add line end of file like | ||
+ | <syntaxhighlight lang=bash> | ||
+ | 10.110.60.239:/export/cnoc /home/cnoc/share nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | create mount point | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ mkdir /home/cnoc/share | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | mount nfs file share | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ sudo mount -a | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * clone canvas source code | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ git clone https://github.com/instructure/canvas-lms.git canvas | ||
+ | $ cd canvas | ||
+ | $ git checkout stable | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * install ruby | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ sudo apt-get install software-properties-common | ||
+ | $ sudo add-apt-repository ppa:brightbox/ruby-ng | ||
+ | $ sudo apt-get update | ||
+ | $ sudo apt-get install ruby2.4 ruby2.4-dev zlib1g-dev libxml2-dev \ | ||
+ | libsqlite3-dev libpq-dev \ | ||
+ | libxmlsec1-dev curl make g++ | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * install node.js | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - | ||
+ | $ sudo apt-get install nodejs | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * install Bundler | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ sudo gem install bundler --version 1.13.6 | ||
+ | $ bundle _1.13.6_ install --path vendor/bundle | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * install Yarn | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - | ||
+ | $ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list | ||
+ | $ sudo apt-get update && sudo apt-get install yarn=1.10.1-1 | ||
+ | |||
+ | $ yarn install | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * copy configuration file | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ 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 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Dynamic settings configuration | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ cp config/dynamic_settings.yml.example config/dynamic_settings.yml | ||
+ | $ vim config/dynamic_settings.yml | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | add configuration on top of file | ||
+ | <syntaxhighlight lang=bash> | ||
+ | production: | ||
+ | config: | ||
+ | canvas: | ||
+ | canvas: | ||
+ | encryption-secret: "your secret on rce .env file" | ||
+ | signing-secret: "your secret on rce .env file" | ||
+ | rich-content-service: | ||
+ | app-host: "rce-canvas.cm.edu" | ||
+ | </syntaxhighlight> |
Revision as of 05:52, 23 July 2020
Diagram
domain : canvas.cm.edu
rce domain : rce-canvas.cm.edu
nginx load balancer
- ip : 10.110.60.55
share file ip : 10.110.60.239
- server ubuntu 18.04 with docker, cpu 4, ram 8
- ip : 10.110.60.239
postgres :
- server : ubuntu 18.04 with docker, cpu 4, ram 8
- ip :10.110.60.209
canvas-lms
- server : ubuntu 16.04 cpu 8, ram 8
- ip : 10.110.60.215, 10.110.60.144
- install nfs
$ sudo apt-get install -y nfs-kernel-server
- create directory for file sharing
$ mkdir -p /home/cnoc/share
$ sudo mkdir -p /export/cnoc
$ sudo chown cnoc:cnoc /export/cnoc
- bind mount filesystem edit file /etc/fstab
$ sudo vim /etc/fstab
add line end of file like
UUID=702da501-ff9a-11e9-a6a6-506b8dc215cd / ext4 defaults 0 0
UUID=702da500-ff9a-11e9-a6a6-506b8dc215cd /boot ext4 defaults 0 0
/swap.img none swap sw 0 0
/home/cnoc/share /export/cnoc none bind 0 0
mount filesystem
$ sudo mount -a
- export fs configuration
$ sudo vim /etc/exports
add line end of file like this allow canvas lms use nfs exports if add canvas-lms server you have to add new server ip address here
/export/cnoc 10.110.60.215(rw,sync,no_root_squash,no_subtree_check)
/export/cnoc 10.110.60.144(rw,sync,no_root_squash,no_subtree_check)
restart nfs service
$ sudo service nfs-kernel-server restart
postgres database deployment
on postgres server
- create dokcer-compose.yml for deploy postgres database
$ mkdir postgres
$ cd postgres
$ vim docker-compose.yml
add line in docker-compose.yml like
version: '3'
services:
pg:
image: postgres:12.3
container_name: postgres
restart: always
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- ./data:/var/lib/postgresql/data
ports:
- 5432:5432
adminer:
image: adminer
restart: always
ports:
- 8080:8080
- create .env file for environment variables use in container
$ vim .env
add line in .env file like
POSTGRES_PASSWORD=<your password>
POSTGRES_DB=canvas
- deploy postgres
$ docker-compose up -d
redis cache deployment
- create docker-compose.yml for deploy redis
$ mkdir redis
$ cd redis
$ vim docker-compose.yml
add line in docker-compose.yml like
version: '3'
services:
redis:
container_name: redis
image: redis:6.0.4
ports:
- 6379:6379
restart: always
- deploy redis
$ docker-compose up -d
canvas rce api deployment
- create docker-compose.yml for deployment
$ mkdir canvas-rce-api
$ cd redis
$ vim docker-compose.yml
add line in docker-compose.yml like
version: '3'
services:
canvas-rce-api:
container_name: canvas-rce-api
image: instructure/canvas-rce-api
ports:
- 80:80
environment:
ECOSYSTEM_KEY: ${ECOSYSTEM_KEY}
ECOSYSTEM_SECRET: ${ECOSYSTEM_SECRET}
NODE_ENV: production
STATSD_HOST: statsd
STATSD_PORT: 1825
restart: always
extra_hosts:
- "canvas.cm.edu:10.110.60.55"
statsd:
container_name: statsd
image: statsd/statsd
restart: always
- create .env file for environment variables use in container
$ vim .env
add line in .env like
ECOSYSTEM_KEY="astringthatisactually32byteslong"
ECOSYSTEM_SECRET="astringthatisactually32byteslong"
- deploy canvas rce api
$ docker-compose up -d
canvas lms build and deployment
on canvas lms server
- mount nfs file share edit file /etc/fstab
$ sudo apt-get install -y nfs-common
$ sudo vim /etc/fstab
add line end of file like
10.110.60.239:/export/cnoc /home/cnoc/share nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0
create mount point
$ mkdir /home/cnoc/share
mount nfs file share
$ sudo mount -a
- clone canvas source code
$ git clone https://github.com/instructure/canvas-lms.git canvas
$ cd canvas
$ git checkout stable
- install ruby
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:brightbox/ruby-ng
$ sudo apt-get update
$ sudo apt-get install ruby2.4 ruby2.4-dev zlib1g-dev libxml2-dev \
libsqlite3-dev libpq-dev \
libxmlsec1-dev curl make g++
- install node.js
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install nodejs
- install Bundler
$ sudo gem install bundler --version 1.13.6
$ bundle _1.13.6_ install --path vendor/bundle
- install Yarn
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt-get update && sudo apt-get install yarn=1.10.1-1
$ yarn install
- copy configuration file
$ 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
- Dynamic settings configuration
$ cp config/dynamic_settings.yml.example config/dynamic_settings.yml
$ vim config/dynamic_settings.yml
add configuration on top of file
production:
config:
canvas:
canvas:
encryption-secret: "your secret on rce .env file"
signing-secret: "your secret on rce .env file"
rich-content-service:
app-host: "rce-canvas.cm.edu"