Tutor Open edX installation, tips & tricks
Table of contents
- Tutor Installation
- Useful Commands
- List down all available commands under tutor
- Stop, Start, Restart
- Check logs
- Tracking logs directory
- Check all container/service status
- Create a user with staff and admin access
- Import the demo course
- Set theme
- Running management commands, find some useful management commands here
- Reloading Open edX settings
- Open service/container shell
- Installing extra requirement
- View config.yml file content
- Set parameter in config.yml file
- Print config value
- Create tutor image build
- Install and enable plugin
- List installed plugins
- Enable/disable a plugin
- Print location of plugin root
- Using Gmail as an SMTP server
- Creating DB dumps
- Changing Open edX settings (or Creating a Tutor plugin)
- References
Tutor Installation
Requirements
Docker: v18.06.0+
Docker Compose: v1.22.0+
Ports 80 and 443 should be open
Hardware:
Minimum configuration: 4 GB RAM, 2 CPU, 8 GB disk space
Recommended configuration: 8 GB RAM, 4 CPU, 25 GB disk space
Other requirements:
sudo apt install python3 python3-pip libyaml-dev
Installation
There are 2 ways to install Tutor:
Install with pip:
pip install "tutor[full]==v13.3.0"
Or download the pre-compiled binary and place the
tutor
executable in your path:sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.3.0/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor sudo chmod 0755 /usr/local/bin/tutor
Run
tutor local quickstart
- Answer a few questions
And Open edX is installed!
Useful Commands
List down all available commands under tutor
tutor local help
Stop, Start, Restart
tutor local stop tutor local start -d tutor local restart tutor local restart lms
Check logs
# Change lms with the service name for which you want to check logs tutor local logs lms -f --tail 100
Tracking logs directory
(tutor config printroot)/data/lms/logs/tracking.log (tutor config printroot)/data/cms/logs/tracking.log
Check all container/service status
tutor local status
Create a user with staff and admin access
tutor local createuser --staff --superuser -pedx edx edx@example.com
Import the demo course
tutor local importdemocourse
Set theme
# For first time only git clone https://github.com/jramnai/mytheme.git cp -r /home/ubuntu/mytheme "$(tutor config printroot)/env/build/openedx/themes/" tutor local settheme mytheme # If there is some change in `mytheme` cd mytheme git pull origin main rm -rf "$(tutor config printroot)/env/build/openedx/themes/mytheme" cp -r /home/ubuntu/mytheme "$(tutor config printroot)/env/build/openedx/themes/" tutor local settheme mytheme
Running management commands, find some useful management commands here
tutor local run cms ./manage.py cms reindex_course --all --setup --settings tutor.production tutor local run lms ./manage.py lms compile_sass --settings tutor.production
Reloading Open edX settings
tutor local exec lms reload-uwsgi
Open service/container shell
# replace lms with your service/container name tutor local exec lms bash tutor local exec mysql bash
Installing extra requirement
# For first time only cd $(tutor config printroot)/env/build/openedx/requirements/ git clone https://github.com/jramnai/my_package.git echo "-e ./my_package" >> "$(tutor config printroot)/env/build/openedx/requirements/private.txt" tutor images build openedx --build-arg EDX_PLATFORM_REPOSITORY=https://github.com/jramnai/edx-platform.git --build-arg EDX_PLATFORM_VERSION=open-release/maple.master tutor local stop tutor local start -d # If there is some change in `my_package` cd $(tutor config printroot)/env/build/openedx/requirements/my_package git pull origin main tutor images build openedx --build-arg EDX_PLATFORM_REPOSITORY=https://github.com/jramnai/edx-platform.git --build-arg EDX_PLATFORM_VERSION=open-release/maple.master tutor local stop tutor local start -d
or simple
echo "git+https://github.com/open-craft/xblock-pdf@b4e404b1f94ffab15c52de5c1382d61235cd8c81#egg=xblock-pdf==1.1.0" "$(tutor config printroot)/env/build/openedx/requirements/private.txt" tutor images build openedx --build-arg EDX_PLATFORM_REPOSITORY=https://github.com/jramnai/edx-platform.git --build-arg EDX_PLATFORM_VERSION=open-release/maple.master tutor local stop tutor local start -d
View
config.yml
file contentcat "$(tutor config printroot)/config.yml"
Set parameter in
config.yml
filetutor config save --set PARAM1=VALUE1 --set PARAM2=VALUE2
Print config value
tutor config printvalue OPENEDX_COMMON_VERSION
Create tutor image build
tutor images build openedx --build-arg EDX_PLATFORM_REPOSITORY=https://github.com/jramnai/edx-platform.git --build-arg EDX_PLATFORM_VERSION=open-release/maple.master or tutor images build openedx --no-cache --build-arg EDX_PLATFORM_REPOSITORY=https://github.com/jramnai/edx-platform.git --build-arg EDX_PLATFORM_VERSION=open-release/maple.master
Install and enable plugin
pip install tutor-myapp tutor plugins enable myapp tutor local quickstart
List installed plugins
tutor plugins list
Enable/disable a plugin
tutor plugins enable myplugin tutor plugins disable myplugin tutor config save
Print location of plugin root
tutor plugins printroot
Using Gmail as an SMTP server
Check connectivity
telnet smtp.gmail.com 587
Disable Tutor SMTP server
tutor config save --set RUN_SMTP=false
Configure SMTP credentials
tutor config save \ --set SMTP_HOST=smtp.gmail.com \ --set SMTP_PORT=587 \ --set SMTP_USE_SSL=false \ --set SMTP_USE_TLS=true \ --set SMTP_USERNAME=YOURUSERNAME@gmail.com \ --set SMTP_PASSWORD='YOURPASSWORD'
Restart your platform
tutor local quickstart
Test it
tutor local run --no-deps lms ./manage.py lms shell -c \ "from django.core.mail import send_mail; send_mail('test subject', 'test message', 'YOURUSERNAME@gmail.com', ['YOURRECIPIENT@domain.com'])"
Creating DB dumps
tutor local exec \ -e USERNAME="$(tutor config printvalue MYSQL_ROOT_USERNAME)" \ -e PASSWORD="$(tutor config printvalue MYSQL_ROOT_PASSWORD)" \ mysql sh -c 'mysqldump --all-databases --user=$USERNAME --password=$PASSWORD > /var/lib/mysql/dump.sql' tutor local exec mongodb mongodump --out=/data/db/dump.mongodb
The
dump.sql
anddump.mongodb
files will be located in$(tutor config printroot)/data/mysql
and$(tutor config printroot)/data/mongodb
.Changing Open edX settings (or Creating a Tutor plugin)
Create plugins root folder
mkdir -p "$(tutor plugins printroot)"
Create an empty “myplugin.py” file in this folder
touch "$(tutor plugins printroot)/myplugin.py"
Verify plugin is correctly detected
tutor plugins list
Add content in myplugin.py file (the setting which you want to set/modify)
from tutor import hooks hooks.Filters.ENV_PATCHES.add_item( ( "openedx-common-settings", """ X_FRAME_OPTIONS = "ALLOWALL" """ ) )
Enable the myplugin
tutor plugins enable myplugin
Re-render your environment
tutor config save
Restart the platform
tutor local restart
References
https://github.com/overhangio/tutor/releases
https://docs.tutor.overhang.io/
Subscribe to my newsletter
Read articles from JayRam Nai directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
JayRam Nai
JayRam Nai
Open edX expert and open-source enthusiast.