Skip to end of metadata
Go to start of metadata

This page describes how to install the Open edX software on a single Ubuntu 12.04 64-bit server from scratch. This is for releases up to Eucalyptus.  For Ficus and beyond, see Native Open edX Ubuntu 16.04 64 bit Installation.

Server Requirements

The following server requirements will be fine for supporting hundreds of registered students on a single server.

Note: This will run MySQL, Memcache, Mongo, nginx, and all of the Open edX services (LMS, Studio, Forums, ORA, etc) on a single server. In production configurations we recommend that these services run on different servers and that a load balancer be used for redundancy. Setting up production configurations is beyond the scope of this wiki page.

  • Ubuntu 12.04 amd64 (oraclejdk required). It may seem like other versions of Ubuntu will be fine, but they are not.  Please use 12.04 until we can adapt and test the installation for other versions.
  • Minimum 4GB of memory
  • At least one 2.00GHz CPU or EC2 compute unit
  • Minimum 25GB of free disk, 50GB recommended for production servers

For hosting in Amazon we recommend an m3.medium server, see https://aws.amazon.com/ec2/pricing

Community Ubuntu AMIs have 8GB on the root directory, make sure to expand it before installing.

Installation instructions

WARNING:

  • These instructions will potentially destroy the server they are run on, you should only do them on a freshly installed virtual machine. But if you still want to have a try to re-install the Open edX stack on the same server, please see this article for some issues you may face and how to fix them.

  • By default ssh will only allow key based authentication. Please setup key based SSH logins or modify the configuration repo to allow for password based SSH logins before running Ansible.

NOTES:

  • If you are running your services behind a proxy, please see here

Let's start:

Launch an Ubuntu 12.04 64-bit server and login to it as a user that has full sudo privileges. If you use EC2, use at least m1.large type with EBS and allocate ~50 GB to the root user.

Update your Ubuntu package sources:

sudo apt-get update -y
sudo apt-get upgrade -y
sudo reboot

Automated installation

You will run two scripts to accomplish the installation. Please read the contents of the scripts before running this to ensure you are aware of everything they will do: they are quite extensive. The scripts require that the running user can run commands as root via sudo.

You choose the version of Open edX by setting the OPENEDX_RELEASE variable before running the commands. See Open edX Releases for the tags you can use.

export OPENEDX_RELEASE=the-tag/you-want-to-install
wget https://raw.githubusercontent.com/edx/configuration/$OPENEDX_RELEASE/util/install/ansible-bootstrap.sh -O - | sudo bash
wget https://raw.githubusercontent.com/edx/configuration/$OPENEDX_RELEASE/util/install/sandbox.sh -O - | bash

Manual installation

This will install the latest master versions of everything. If you want a specific version, such as a named release like Dogwood, use the automatic instructions, or read those shell scripts to learn how to install manually.

sudo apt-get update -y
sudo apt-get install -y build-essential software-properties-common python-software-properties curl git-core libxml2-dev libxslt1-dev libfreetype6-dev python-pip python-apt python-dev libxmlsec1-dev swig libmysqlclient-dev
sudo pip install --upgrade pip
sudo pip install --upgrade virtualenv

On the new server, clone the configuration repo:

cd /var/tmp
git clone https://github.com/edx/configuration

To allow password based SSH authentication, edit the common role inside of configuration/playbooks/roles/common_vars/defaults/main.yml and set COMMON_SSH_PASSWORD_AUTH to "yes"

Install the Ansible requirements:

cd /var/tmp/configuration
sudo pip install -r requirements.txt
sudo pip install setuptools --upgrade

Run the edx_sandbox.yml playbook in the configuration/playbooks directory

cd /var/tmp/configuration/playbooks && sudo ansible-playbook -c local ./edx_sandbox.yml -i "localhost,"

If Ansible stops at some point, look at log files. See locations of log files in the Tips & Tricks page.

Overriding default web ports

After installation connect your web browser to the following ports:

  • LMS - 80
  • Studio - 18010

You may want to override the default ports for Studio and lms-preview if you are setting up subdomains to connect to your sandbox. By default nginx will forward studio.* to the studio gunicorn process.

Example where preview.example.comexample.com and studio.example.com all point to the same server and you want to deploy the master branch of the edx-platform repo.

cd /var/tmp/configuration/playbooks/edx-east

sudo ansible-playbook -c local --limit "localhost:127.0.0.1" ../edx_sandbox.yml \
-i "localhost," -e 'EDXAPP_PREVIEW_LMS_BASE=preview.example.com  EDXAPP_LMS_BASE=example.com  EDXAPP_LMS_PREVIEW_NGINX_PORT=80 EDXAPP_CMS_NGINX_PORT=80 EDXAPP_LMS_NGINX_PORT=80 edx_platform_version=master '


Bad Suggestions (Arbitrary Upgrades)

Some parts of Open edX are outdated. If you see a message suggesting that you update something manually, don't do it -- Open edX is probably relying on the outdated software remaining at that older version. Specifically:

  • Ubuntu may alert you that a newer version of Ubuntu available when you SSH in to 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.

If you arbitrarily upgrade software in Open edX, things will break. Instead, you should submit a pull request to change the line in the Open edX project where that specific version of the software is defined. All pull requests need to be reviewed before they can be merged, and part of the review process will consist of testing Open edX with the updated software, identifying any breakages, and fixing them as part of the pull request.

See edX-Managing-the-Full-Stack for how to manage and update the server once it is running


  • No labels

7 Comments

  1. If you have support questions, see the Getting Help page (https://open.edx.org/getting-help) for places to ask.  Questions posted here will be deleted.

  2. End of life of Ubuntu 12.04.5 LTS is April 2017

    https://wiki.ubuntu.com/Releases

    Today is mid September 2016, and if I want to install Eucalyptus version I think it's not a good thing use a nearly deprecated SO.


  3. We will be basing Ficus on 16.04.

    1. What is the expected release date of Ficus for those considering a new deployment?

  4. We should move this conversation to one of the mailing lists.

  5. Hi,

    Currently I have open Ubuntu 14.04.3 LTS edx in with bitnami.

    I'm trying to migrate from Cypress to Dogwood.

    For this I run the following commands:


        cd /opt/bitnami/

        ./use_edx

        cd /opt/bitnami/apps/edx/edx-platform/

        ./migrate.sh -c fullstack -t named-release/dogwood


    Get the following error: (see picture)