Categories
Default

Django project layout for Heroku

By: José Padilla

At Blimp we love working with Django. We use it for almost all of our projects, including Blimp and -M.

In Django 1.4, the startproject and startapp commands came with a new template option. Specifying this --template option lets you use a custom project directory structure for your project from a path or URL. By default when you run the startproject management command, it creates a Django project directory structure that contains manage.py and a project package (containing a settings.py and other files) based on this default template.

We decided to create a project template with the things we always end up doing on our Django projects. This template has a couple of useful settings and Fabric commands that make deploying, managing, and using Django with Heroku easier.

How to install

django-admin.py startproject --template=http://git.io/2h-ygQ --extension=py,md,dev project_name

What’s included?

  • Fabric – Fabric is a Python library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.
  • South – schema and data migrations for Django
  • dj-database-url – Django utility allows you to utilize the DATABASE_URL environment variable to configure your Django application.
  • django-extensions – Custom management extensions for the Django
  • gunicorn – Simply implemented, light on server resource usage, and fairly speedy Python WSGI HTTP Server.
  • psycopg2 – PostgreSQL database adapter for Python

Fabric Script
Fabric is definitely the easiest way to execute local and remote shell commands. We’ve created quite a few of these to help with deployment, database management, and Heroku, all aware of the environment, so for example, you can easily run database migrations in development, staging, or production.

You can keep track of the project on GitHub. Follow me (jpadilla) on GitHub.

Taller: Cloud Computing for Hackers

El próximo martes 23 de octubre y jueves 25 de octubre de 7pm a 9pm, estaré ofreciendo un taller sobre “cloud computing” especialmente diseñado para “hackers”. El evento es idea de Rafael Arce del Departamento de Ciencias en Computadoras de la UPR de Rio Pierdras.

NOTA: El término “cloud computing” puede significar un montón de cosas para mucha gente pero en nuestro taller nos limitamos a hablar de servicios como el de Amazon Web Services (AWS), Rackspace Open Cloud, Heroku, Nodejitsu y AppFog. No nos interesan las soluciones “enterprise”, porque no las usamos, así que no podemos hablar mucho de ellas.

El taller será de dos días. El primer día espero poder cubrir toda la teoría y hacer un ejercicio con AWS. Los asistentes pasarán por todo el proceso de crear una instancia en EC2, se conectarán vía SSH e instalarán Apache y PHP. Además podrán aprender de primera mano como crear un AMI y lanzar múltiples instancias de un AMI. También podrán ver como configurar un ELB y asignarle múltiples instancias. También hablaremos de Route 53, RDS y otros de los servicios de AWS.

El segundo día hablaremos de Heroku y en esta parte del taller le dedicaremos mas tiempo a hacer cosas interesantes en el lado del app. Haremos un pequeño app usando Flask y Redis como base de datos. Como parte de este proceso los asistentes aprenderán a configurar un ambiente de desarrollo de Python, crear un app y lanzarlo a Heroku.

La gran mayoría de los asistentes serán estudiantes pero tenemos 10 espacios disponibles para la comunidad de Startups of Puerto Rico o cualquier otra persona interesada. El costo del taller es $0 y será de fuera de horas de trabajo así que no hay excusas. Si quieres ir abajo está el formulario para adquirir la taquilla.

Aprovecho para agradecer a Amazon porque mediante su programa AWS in Education Coursework Grant award” conseguimos créditos suficientes para que los asistentes al taller puedan usar los servicios de Amazon y tengan la experiencia completa y “hands-on”. Gracias Amazon después de todos estos años finalmente te sacamos algo.

Estoy esperando respuesta de Heroku para ver si tenemos “swag” para regalar. Heroku tiene un servicio gratis bastante generoso así que no creo que haga falta que nos den créditos. Si llegan los celebraremos.

Requisitos
Es necesario que los asistentes tengan conocimiento básico de web development, manejar el terminal en *nix (Mac OSX, Linux, ect.), y conocimiento mínimo de git. Este ultimo requisito no es 100% necesario pero ayudaría un montón.

Detalles del Evento
Workshop Cloud Computing for Hackers
Primera parte: martes, 23 de octubre de 2012 de 7pm a 9pm
Segunda parte: jueves, 25 de octubre de 2012 de 7pm a 9pm
Salón A-143 – Universidad de Puerto Rico Recinto de Rio Piedras
Precio $0

Cloud Computing for Hackers en Eventbrite

Categories
Default

Django Static Files on Heroku

It’s a fact. Heroku is a great solution for Python web developers. They are the best and truly polyglot hosting solution for web apps. The only thing that took me a while to get working with my Django apps was the static files. I started using S3 as my backend but preferred a simpler solution for very small projects.

I searched around and found a very simple solution.

web: python app/manage.py collectstatic --noinput; bin/gunicorn_django --workers=4 --bind=0.0.0.0:$PORT app/settings.py 

Just add the collectstatic command to the Procfile.

How to host Django apps on Heroku

Today Heroku announced their integration with Facebook. Now, with only a few clicks you can have a Facebook application running on Heroku. This sounded interesting so I gave it a try. But while doing it I noticed something unexpected. The environment option of the Heroku hosting dialog showed PHP, Node.js, Ruby and Python. Wait what? Yup, it seems like Heroku can host Python apps. I don’t know if they announced this or not, but this is news for me.

So, I stopped playing with the Facebook integration thing and started working on getting a sample Django running on the service. After a little trial and error I ended with this instructions.

First install RVM and Ruby 1.9.2

Now add RVM to your .bash_profile

Reload your .bash_profile

Now install Ruby 1.9.2 and set it as the defautl

Install the Heroku Gem and set it up

Now lets start by creating a new folder for our app.

Create a virtualenv for new our project and install all the dependencies

Now let’s create a new django app inside our heroku-template folder

Make the manage.py executable. This is required by Heroku

Finally create a file called Procfile in the heroku-template folder with the following content

Ok that part is complete now lets put everything on a git repo

Now start the Heroku application using the Cedar stack.

Finally

This is how the final folder should look like

That should be it! Happy Hacking.