Instalación en Heroku

De Wiki Diaspora*
Saltar a: navegación, buscar

Primeros pasos

Comenzaremos instalando un pod mímimo, completamente alojado en Heroku. Es una buena idea tener una instalación de RVM local, para mantener tu sistema local algo más limpio. Haz un fork de Diaspora, y clona tu fork en tu máquina local. Ahí, haz un checkout de una rama personalizada para tu pod, en este tutorial le llamaremos «heroku»:

 cd diaspora
 git checkout -b heroku origin/master

Para actualizar tu Gemfile.lock, ejecuta:

 DB=postgres bundle --without development test heroku production assets
 git add Gemfile.lock
 git commit -m "Cambiar Gemfile.lock a pg exclusivamente"
Nota: Para usuarios de Windows: Heroku escribe el «Gemfile» dinámicamente al momento de compilar, y utiliza un modo de implementación que insiste es que Gemfile.lock esté en control de versiones. Si estás implementando desde un sistema que no esté equipado con las herramientas de desarrollo de Ruby, esto puede causar problemas con las gems condicionales. Para cambiar el «Gemfile» en Heroku, es necesario ejecutar bundle localemente, y crear un Gemfile.lock que coincida. Sin embargo, bundle no está bien soportado por el momento en sistemas nativos de Windows. Así que, para implementar tus aplicaciones de Rails en Heroku más fácilmente, se recomienda utilizar GNU/Linux.

Instala la gem de Heroku:

 gem install heroku

Crea una aplicación, debes elegir un nombre único para tu aplicación. De aquí en adelante, le llamaremos «pod-diaspora»:

 heroku apps:create pod-diaspora

Habilita los complementos requeridos:

 heroku labs:enable user-env-compile
 heroku addons:add redistogo:nano
 heroku addons:add heroku-postgresql

Y haz que la base de datos esté disponible. Remplaza el texto «SUSTITUYE» con la parte correspondiente de HEROKU_POSTGRESQL_SUSTITUYE_URL que te dio el último comando (o busca este valor con heroku config:

 heroku pg:promote HEROKU_POSTGRESQL_SUSTITUYE

Define una configuración básica, recuerda remplazar «pod-diaspora»:

 heroku config:add HEROKU=true  DB=postgres ENVIRONMENT_URL=https://pod-diaspora.herokuapp.com/ ENVIRONMENT_ASSETS_SERVE=true ENVIRONMENT_UNICORN_EMBED_RESQUE_WORKER=true  ENVIRONMENT_CERTIFICATE_AUTHORITIES=/usr/lib/ssl/certs/ca-certificates.crt

Ahora puedes editar config/diaspora.yml.example, y añadir los ajustes que deseas difieran de los predeterminados (config/defaults.yml), convirtiéndolos a variables de entorno, como se describe en la parte superior del archivo.

Establece un token de seguridad:

 heroku config:add SECRET_TOKEN=$(curl -s "http://www.random.org/cgi-bin/randbyte?nbytes=40&format=h" | tr -d " \n")

Ahora es momento de implementar:

 git push heroku heroku:master

Y cargar el esquema:

 heroku run rake db:schema:load

Reinicia tu aplicación:

 heroku restart

Esto debería ser suficiente para tener un pod básico. Para abrirlo en tu navegador, utiliza:

 heroku open

Página de inicio personalizada

Edita .gitignore, y elimina la siguiente línea:

 app/views/home/_show.*

Crea tu página de inicio, como se describe aquí. Y añádela a tu rama:

 git add app/views/home/
 git commit -m "Página de inicio personalizada"

Impleméntala:

 git push heroku heroku:master

Almacenaje de imágenes y assets en S3

Para habilitar el alojamiento de imágenes, primero define tu información de S3:

 heroku config:add ENVIRONMENT_S3_ENABLE=true ENVIRONMENT_S3_KEY=cámbiame ENVIRONMENT_S3_SECRET=cámbiame ENVIRONMENT_S3_BUCKET=cámbiame

Cambia tu región en caso de que sea distinta al valor por defecto:

 heroku config:add ENVIRONMENT_S3_REGION=eu-west-1

Para habilitar la subida de assets a S3, y servirlos desde ahí:

 heroku config:add ENVIRONMENT_ASSETS_UPLOAD=true ENVIRONMENT_ASSETS_HOST=https://cámbiame.s3.amazonaws.com

Ejecuta lo siguiente para actualizar tus assets. Actualmente la integración con la tarea de rake no funciona, así que tendrás que utilizar este comando luego de cada implementación:

 heroku run 'rails runner "AssetSync.sync"'

Almacenaje de base de datos en RDS

 heroku config:set DB=mysql

Obtén el SHA1 del commit:

 git log --grep "Cambiar Gemfile.lock a pg exclusivamente"
 git revert <SHA1 del commit del comando anterior>

Sigue esta guía, e implementa de nuevo.

Migrar una instalación existente

Nota: Estas instrucciones no son infalibles, revisa lo que hace cada comando.

Asumiendo que hayas hecho los commits a «master», y que estos commits estén en tu fork.

 git branch -m master antiguo-heroku
 git remote add upstream git://github.com/diaspora/diaspora.git # si no se ha hecho todavía
 git fetch upstream
 git checkout -b master upstream/master
 git push -f origin master antiguo-heroku
 git checkout -b heroku origin/master

Heroku CLI ya no está en el «Gemfile», asegúrate de que esté instalado:

 gem install heroku

Remplaza «pod-diaspora» con el nombre de tu aplicación.

 heroku config:set HEROKU=true  ENVIRONMENT_URL=https://pod-diaspora.herokuapp.com/ ENVIRONMENT_ASSETS_SERVE=true ENVIRONMENT_UNICORN_EMBED_RESQUE_WORKER=true  ENVIRONMENT_CERTIFICATE_AUTHORITIES=/usr/lib/ssl/certs/ca-certificates.crt

Ejecuta heroku config para revisar que SECRET_TOKEN este definido, si lo está, sigue los pasos descritos con anterioridad. También comprueba que DB esté establecido a la base de datos que utilizas («postgres» o «mysql»). NO_SSL es ahora ENVIRONMENT_REQUIRE_SSL, y para deshabilitar SSl debes definir la variable a false.

Edita config/diaspora.yml.example, y añade los ajustes que deseas difieran de los predeterminados (config/defaults.yml), convirtiéndolos a variables de entorno, como se describe en la parte superior del archivo.

Si deseas tener una página de inicio personalizada:

 git checkout antiguo-heroku
 cp app/views/home/_show.html.haml _show.html.haml
 git checkout heroku
 nano .gitignore # remove app/views/home/_show.*
 mv _show.html.haml app/views/home/
 git add app/views/home/_show.html.haml
 git commit -m "Página de inicio personalizada"

Puedes migrar las modificaciones de la siguiente manera:

 git log angiguo-heroku # Obtén los SHA1s de los commits que quieras migrar
 git cherry-pick <sha1 del commit> # Para cada commit

Asegúrate de que las nuevas variables de S3 estén definidas correctamente, como en la sección «Almacenaje de imágenes y assets en S3», si deseas utilizar este servicio.

Implementa inicialmente usando:

 git push -fu heroku heroku:master

En el futuro, simplemente git push debería ser suficiente.