Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
108 lines (65 sloc) 2.71 KB

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=https://github.com/giulivo/openshift-hellotornado
cd hellotornado

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

Go at http://hellotornado-$YOURDOMAIN.rhcloud.com 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 app.py, create your start file (diy/hellotornado.py):

#!/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/activate_this.py')
execfile(virtualenv, dict(__file__=virtualenv))

import app
app.main(os.environ['OPENSHIFT_DIY_IP'])

Make sure your binary file is executable:

chmod a+x diy/hellotornado.py

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 
#!/bin/bash
# The logic to start up your application should be put in this
# script. The application will work only if it binds to
# $OPENSHIFT_DIY_IP:8080
nohup ${OPENSHIFT_REPO_DIR}/diy/hellotornado.py > ${OPENSHIFT_DIY_LOG_DIR}/hellotornado.log 2>&1 &
$ more .openshift/action_hooks/stop 
#!/bin/bash
# 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!

Jump to Line
Something went wrong with that request. Please try again.