Skip to content


Subversion checkout URL

You can clone with
Download ZIP
demo app shows how to deploy a tornado based web app on OpenShift
Python Shell
Latest commit 025a3aa @gfidente Merge pull request #1 from santiago26/patch-1
New command for deploying from this repo


Tornado on OpenShift

Tornado is an open source version of the scalable, non-blocking web server and tools that power FriendFeed.

This article describes how to deploy a Tornado web application on OpenShift. It has been updated to leverage the DIY cartridge introduced in late March. We will deploy Tornado in a custom tailored virtualenv.

To create our new app on OpenShift:

rhc app create hellotornado -t diy-0.1 --from-code=
cd hellotornado

Code from the remote repository will be automatically cloned to your current directory.

Go at http://hellotornado-$ and enjoy!

What it does

You can achieve the same by doing the following steps manually. Create a virtualenv in `misc/` (and don't forget to create this on a python2.6 system, as that is the version of python hosted on OpenShift):

virtualenv --no-site-packages misc/virtenv

Activate your virtualenv and install the needed modules:

source misc/virtenv/bin/activate
pip install tornado
pip install futures
pip install pycurl

Now, assuming your app is in, create your start file (diy/

#!/usr/bin/env python
import os
cwd = os.path.dirname(os.path.abspath(__file__))
os.environ['PYTHON_EGG_CACHE'] = os.path.join(cwd, '..', 'misc/virtenv/lib/python2.6/site-packages')
virtualenv = os.path.join(cwd, '..', 'misc/virtenv/bin/')
execfile(virtualenv, dict(__file__=virtualenv))

import app

Make sure your binary file is executable:

chmod a+x diy/

Delete the `diy/index.html` file or you'll always get only the standard welcome page after pushing the code:

rm diy/index.html

Create the start/stop scripts (these are examples to start with):

$ more .openshift/action_hooks/start 
# The logic to start up your application should be put in this
# script. The application will work only if it binds to
nohup ${OPENSHIFT_REPO_DIR}/diy/ > ${OPENSHIFT_DIY_LOG_DIR}/hellotornado.log 2>&1 &
$ more .openshift/action_hooks/stop 
# The logic to stop your application should be put in this script.
kill `ps -ef | grep hellotornado | grep -v grep | awk '{ print $2 }'` > /dev/null 2>&1
exit 0

Finally, commit and push your project:

git add .
git commit -a -m "Initial commit"
git push

To run and test you application locally before committing, just source the virtualenv activate file and start with the custom made start/stop scripts.

Have fun!

Something went wrong with that request. Please try again.