How to install Open edx on Ubuntu 20.04

Introduction
Open edX is an open-source platform you can use to create and host online courses. It was originally developed in 2012 by scientists at MIT and Harvard University and has since been adopted by organizations of all shapes and sizes to power a wide range of online learning use cases.
Open edX is the world's leading online learning platform. Google, Microsoft LaaS are just some of its users who use it to train employees and onboard new customers.
It has also been adopted by Harvard, MIT, Arizona State University among others for both interactive content delivery as well as progress tracking capabilities in large courses with multiple participants at once through an open-source system that can be downloaded easily free of cost from their website.
You can find some of the real-world examples here:
One of the most prominent features of the Open edX learning platform is self-paced training, which allows students to learn at their own pace. Other features include online discussion groups, wiki-based collaborative learning, learning assessments as a student progresses through a course, right-to-left language support, learner analytics, cohort-specific content.
As you complete this article, your production-ready Open edX platform is installed on a Ubuntu 20.4 server that can serve thousands of students and host multiple courses with ease.
Versions
Since 2012 Open edX team released 12 versions of this learning management system. Each new release contains several new features for learners, course teams, and developers. You can view full release notes for each version on the Open edX website.
This article describes the steps needed to install Lilac on Ubuntu 20.04.
Prerequisites
An understanding of the following items is required for this installation option:
  • Basic terminal usage
  • The basics of how Python web applications are built, installed, and deployed.
  • How to manage a Linux system, including supervisor.
  • The basics of configuration management and automation using Ansible.
  • Server Requirements
    A single server can support hundreds of registered students if the following requirements are met.
    Ubuntu 20.04 server
    You need a Ubuntu 20.04 amd64 server(oraclejdk required). This server should be accessible over SSH and have a public IP address associated with it for hosting your Open edX instance publicly available on the internet.
    Minimum 8GB of memory
    To run Open edX successfully, you need a minimum of 8GB of memory. Please ensure that your server has more memory than that. For better performance, you can utilize a larger compute instance size depending on the amount of memory you need to serve students.
    At least one 2.00GHz CPU and 50GB of Disk Space
    If you want to have a few courses and video materials, it's suggested that you have more than 50GB of disk space.
    You should have wget installed in your server.
    If wget is not installed already, run sudo apt-get install wget
    An understanding of the following items is required for this installation option:
    HTTP firewall ports
    After creating your Ubuntu server, Open the following HTTP ports used by Open edx
  • 80
  • 443
  • 22
  • 18010
  • 18000
  • 1. Prep the server
    Launch your server and log in to it via SSH as a user that has full sudo privileges. Update your Ubuntu package sources:
    sudo apt-get update -y
    sudo apt-get upgrade -y
    sudo reboot
    2. Bootstrap the Ansible installation
    export OPENEDX_RELEASE=open-release-lilac.master
    wget https://raw.githubusercontent.com/edx/configuration/open-release/lilac.master/util/install/ansible-bootstrap.sh -O - | sudo bash
    3. Prep the Ansible Configuration
    Create a directy for edx-configs where all the ansible configurations goes, download the configuration variables there, and generate strong passwords for different services like different MySQL users and MongoDB.
    mkdir edx-configs && cd edx-configs
    sudo wget https://raw.githubusercontent.com/edx/configuration/open-release/lilac.master/playbooks/sample_vars/passwords.yml
    sudo wget https://raw.githubusercontent.com/cubiteDevops/do-edx-configs/main/vars.yml
    while IFS= read line; do REPLACE=$(LC_ALL=C < /dev/urandom tr -dc 'A-Za-z0-9' | head -c35) && echo "$line" | sed "s/\!\!null/\'$REPLACE\'/"; done < ./passwords.yml | sudo tee ./my-passwords.yml

    Be sure to save the generated passwords in a safe place

    4. Download the Theme
    Create a directory for theming assets and download Lilac theme there.
    mkdir /edx-themes && sudo chmod -R 777 /edx-themes && cd /edx-themes
    git clone https://github.com/cubitetech/theme -b lilac cubite-theme

    This theme is responsive and made with one of the best frontend technologies, TailwindCSS.

    5. Install Open edX

    These instructions will potentially destroy the server they are run on, you should only do them on a freshly installed virtual machine

    This can take some time, perhaps an hour.
    cd /edx/app/edx_ansible/edx_ansible/playbooks/ && git checkout open-release/lilac.master
    sudo /edx/app/edx_ansible/venvs/edx_ansible/bin/ansible-playbook -c local ./openedx_native.yml -i 'localhost,' -e@/root/edx-configs/my-passwords.yml -e@/root/edx-configs/vars.yml
    Important
  • Ubuntu may alert you that a newer version of Ubuntu is available when you SSH into your server and may suggest that you run do-release-upgrade to upgrade to that newer version. Don’t do it.
  • Pip may alert you that there is a newer version of pip available and may suggest that you run pip install --upgrade pip to install it. ** Don’t do it**.
  • 6. Important Open edX Platform Folders
    /edx/app
    application software files for all Open edx modules
    /edx/app/edx_ansible/edx_ansible/playbooks
    all Ansible playbooks. You’ll learn a lot about how Ansible works simply by learning more about its folder structure
    /edx/app/edx_ansible
    location to store server-vars.yml (further described in downstream repos)
    /edx/bin
    “home” folder for all pip, ansible, and bash admin utilities
    /edx/etc
    configuration files for all edx modules
    /edx/var
    all data (app, logs, etcetera)
    7. Add Superuser
    After the installation is successful you need a superuser to be able to access the Django admin portal. To add superuser to your instance, SSH to the server and run the following command
    sudo -H -u edxapp bash
    source /edx/app/edxapp/edxapp_env
    cd /edx/app/edxapp/edx-platform
    python manage.py lms --settings=production createsuperuser
    The prompt asks for a username, an email, and a password. After the user creation is complete visit http://public\_ip\_of\_your\_server/admin and login with the username (not the email) and password you picked previously.

    This user has full access to your platform, Make sure you save your username and password in a secure place.

    8. Enable SSL certificate
    Installing an SSL certificate on your OpenX server is the best way to ensure security for both yourself and your students. The installation process only takes a few minutes.

    It's highly recommended to install an SSL certification as soon as possible to keep users safe from any potential cyber-attacks.

    Create DNS records
    Open edx runs on Nginx, a fast, bare-bones webserver alternative to Apache, and like Apache, Nginx can host multiple virtual web servers on the same Ubuntu server instance. Each Open edX instance has at least 3 URLs. One for LMS, one for Studio, and One for Preview. Create A record in your DNS for each URL pointing to your server's public IP address. For example
    mysite.com                #LMS record
    studio.mysite.com         #Studio record
    preview.mysite.com        #Preview record
    Open edX and edX are registered trademarks. You may not use “openedx.” or “edx.” as subdomains when naming your site. Here are some examples of unacceptable domain names:
  • DON’T : openedx.yourdomain.org
  • DON’T : edx.yourdomain.org
  • DON’T : openedxyourdomain.org
  • DON’T : yourdomain-edx.com
  • Change lms.yml and studio.yml
    lms.yml
    open /edx/etc/lms.yml file with your favorite editor. Change following variables to domain names you just assigned to your instance
    PREVIEW_LMS_BASE: preview.mysite.com
    LMS_BASE: mysite.com
    LMS_ROOT_URL: https://mysite.com
    CMS_BASE: studio.mysite.com
    CROSS_DOMAIN_CSRF_COOKIE_DOMAIN: 
    LOGIN_REDIRECT_WHITELIST:
      - studio.mysite.com
    studio.yml
    open/edx/etc/studio.yml file with your favorite editor. Change following variables to domain names you just assigned to your instance
    PREVIEW_LMS_BASE: preview.mysite.com
    LMS_BASE: mysite.com
    LMS_ROOT_URL: https://mysite.com
    CMS_BASE: studio.mysite.com
    LMS_INTERNAL_ROOT_URL: https://mysite.com
    CROSS_DOMAIN_CSRF_COOKIE_DOMAIN: 
    LOGIN_REDIRECT_WHITELIST:
      - studio.mysite.com
    Change Nginx files
    LMS and Preview
    open /edx/app/nginx/sites-available/lms file with our favorite editor and add the following after server { section
    server_name mysite.com preview.mysite.com
    It should look like following
    server {
        server_name mysite.com preview.mysite.com
            .
            .
            .
            .
            .
            .
    Studio
    open /edx/app/nginx/sites-available/cms file with our favorite editor and add the following after server { section
    server_name studio.mysite.com
    It should look like following
    server {
         server_name studio.mysite.com
         .
         .
         .
         .
         .
         .
    Install Certbot
    The published installation procedure on the official Certbot site changed in late 2020. The good news is that the new installation procedure is very simple to follow assuming that you are running Ubuntu 20.04 LTS or later:
    sudo apt-get update
    sudo snap install core; sudo snap refresh core
    sudo snap install --classic certbot
    sudo ln -s /snap/bin/certbot /usr/bin/certbot
    sudo certbot --nginx
    When the prompt asks you for the Domain names, Make sure it covers LMS, Studio, and Preview addresses. Also, Choose Redirect to redirect all HTTP connections to HTTPS
    Now you need to restart Nginx
    sudo systemctl restart nginx
    To verify that your configuration edits are correct you should check the server status after restarting:
    sudo systemctl status nginx
    Test Your Platform
    If everything works then your Open edX LMS and CMS should automatically redirect to https.
    Setup A Cron Job To Auto-Renew Your Certificate(s)
    The Certbot packages on your system come with a cron job that will renew your certificates automatically before they expire. Since Let’s Encrypt certificates expire after only 90 days, it’s highly advisable to take advantage of this feature. You can test automatic renewal for your certificates by running this command:
    sudo certbot renew --dry-run
    If that appears to be working correctly, you can arrange for automatic renewal by adding a cron job that runs the following command regularly:
    certbot renew
    Create a new cron job and add renew command there.
    crontab -e
    and next add following the content of the opened file
    0 7 * * * sudo certbot renew
    9. Troubleshooting Guide
    Restarting the platform
    When your Open edX installation is misbehaving and you’re unsure of your next step, You begin with a reboot. It can’t hurt, and occasionally you’re pleasantly surprised to find your instance in good health immediately afterward. The commands are as follows:
    /edx/bin/supervisorctl restart lms
    /edx/bin/supervisorctl restart cms
    Django configuration
    If you’re not a Python Django developer and you haven’t previously supported a Django app then you’d have no reason to be aware that Django apps have their back end that’s somewhat similar to the WordPress admin console. From your web browser, open your LMS, login, and then navigate to /admin/.
    It's suggested that you spend some time getting acquainted with the parameters that are available to modify in the console.
    Creating courses
    In this article, we don't go over the details of how to create a course in your Open edX instance.
    However, if you want to get started right away and skip all these complicated steps just head straight on over to your CMS URL, The studio URL you set in step 8. Once there log in with any user who has staff access such as the one created for yourself during Step 7. After logging into Studio successfully it's time to start creating courses.
    Customizing Theme
    The theme directory is located at /edx-themes to customize it please follow Open edX instructions for comprehensive theming and changing theme
    Conclusion
    Open edX is a good alternative for businesses since it allows you to implement customizations, manage and update training courses. Open edX will enable organizations to deploy their learning platform and develop high-quality content for their learners by providing a strong LMS and Open edX Studio.
    It is important to keep in mind that Open edX can be a complex system. However, following the right instructions and best practices will allow you to experience one of the most scalable LMSs available today.
    References
    If you need any help contact us at hello@cubite.io

    60

    This website collects cookies to deliver better user experience

    How to install Open edx on Ubuntu 20.04