Iniciar un proyecto PHP en Heroku

Tutorial con pasos y herramientas para crear y alojar una aplicación PHP gratis en Heroku

El servicio de alojamiento de Heroku es ideal para iniciar proyectos y hacer pruebas ya que es gratuita su versión más básica. Este es un resumen de la instalación de una aplicación básica en PHP.

¿Qué necesitamos? Tener una cuenta de Heroku, y PHP y composer instalados. Tambíen es necesario tener conocimientos de git, por lo menos los conceptos básicos.

Lo primero que se hace es descargar e instalar la barra de herramientas de Heroku en tu sistema operativo (Mac OS, Windows, Ubuntu/Debian), para poder usar sus comandos. Una vez instalada ya podemos usar el comando .

Iniciamos sesión en la cuenta Heroku desde la consola:

heroku login
Enter your Heroku credentials
Email: ejemplo@ejemplo.com
Password:
Authentication successful.

Preparar la aplicación base:

Instalaremos la aplicación básica:

git clone https://github.com/heroku/php-getting-started.git
cd php-getting-started

Ahora tendremos un repositorio git que contiene una aplicación PHP simple y un archivo composer.json.

Implementar la aplicación en Heroku:

Los siguientes pasos preparan a Heroku para recibir el código fuente. Escribimos en la consola:

heroku create
https://sleepy-crag-1425.herokuapp.com/ | https://git.heroku.com/sleepy-crag-1425.git
Git remote heroku added

Esto creará un repositorio git remoto llamado heroku, que estará asociado al repositorio local. Heroku genera un nombre aleatorio, en este caso sleepy-crag-1425, aunque puedes añadirle otro parámetro para personalizar el nombre.

Es el momento de subir el código fuente:

git push heroku master
Counting objects: 103, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (51/51), done.
Writing objects: 100% (103/103), 17.37 KiB | 0 bytes/s, done.
Total 103 (delta 39), reused 103 (delta 39)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> PHP app detected
remote: -----> No runtime required in composer.json, defaulting to PHP 5.6.7.
remote: -----> Installing system packages...
remote:        - PHP 5.6.7
...

Y ya está, la app ya está disponible online en el enlace automático que ha creado, al que se puede acceder con el comando:

heroku open

Logs

Es importante el código que te permite ver el logging de tu aplicación para ver procesos y solucionar errores:

heroku logs --tail

Esto iniciará un streaming de los logs que va indicando los procesos que se generan, si visitas de nuevo la aplicación online verás de un nuevo mensaje de log. Para frenar este proceso, sólo has de pulsar Control+C.

Definir el Procfile

En Heroku se utiliza un archivo llamado , un archivo de texto en el directorio raíz de tu aplicación que declara el comando necesario que se ha de ejecutar para iniciar tu aplicación. El procfile del ejemplo anterior sería así:

web: vendor/bin/heroku-php-apache2 web/

Esto declara un tipo de proceso único (web), y el comando necesario para iniciarlo. El proceso "web:" es importante ya que este tipo de proceso se adjuntará a la pila de enrutamiento HTTP de Heroku, recibiendo tráfico web cuando se implemente.

Escalar la aplicación

Por defecto Heroku utiliza sólo un único "dyno", que es el contenedor que inicia el comando especificado en el Procfile. Puedes comprobar cuantos dynos están ejecutándose usando el comando:

heroku ps

Un sólo dyno hará que éste se ponga en modo reposo después de una hora de inactividad. Esto causa que haya un retraso de unos segundos para la primera petición tras esa hora de inactividad. Las peticiones subsecuentes se responden a velocidad normal. Para evitar esto se escala a más de un dyno:

heroku ps:scale web=2

Para esto ya has de verificar tu cuenta, añadiendo tus datos de pago. Para cada aplicación, Heroku permite 750 horas dyno gratuitas. Ejecutar tu aplicacion a 2 dynos implicaría tener que pagar una cantidad, por lo que no pases a 2 dynos si sólo quieres hacer pruebas y no pagar nada.

Subir cambios locales al repositorio de Heroku

Heroku reconoce que es una aplicación en PHP por el archivo composer.json. Cuando se implementa una app, Heroku lee este archivo e instala las dependencias en el directorio .

Cualquier cambio que hagas en este archivo o en los archivos de tu app se subirán mediante los comandos básicos de git:

git add .
git commit -m "Demo"
git push heroku master

Comprueba que todo funciona correctamente:

heroku open

Instalar add-ons

Los add-ons son servicios de terceros que proporcionan herramientas adicionales para tu aplicación. Por ejemplo para utilizar una base de datos Mysql es necesario añadir un add-on como ClearDB. Para esto también es necesario verificar la cuenta añadiendo tus datos de pago, pero no suele ser necesario pagar en su uso mas básico. En el caso de ClearDB tienes 5mb de espacio en su versión gratuita.