Skip to content

Latest commit

聽

History

History
236 lines (149 loc) 路 6.52 KB

File metadata and controls

236 lines (149 loc) 路 6.52 KB

驴Qu茅 es Heroku?

Heroku es una soluci贸n de alojamiento todo en uno muy popular. Puedes encontrar m谩s informaci贸n en heroku.com

Registrarse

Necesitar谩s una cuenta de Heroku. Si no tienes una, reg铆strate aqu铆: https://signup.heroku.com/

Instalar CLI

Aseg煤rate de haber instalado la herramienta CLI de Heroku.

HomeBrew

brew tap heroku/brew && brew install heroku

Otras Opciones de Instalaci贸n

Consulta las opciones de instalaci贸n alternativas aqu铆: https://devcenter.heroku.com/articles/heroku-cli#download-and-install.

Iniciar sesi贸n

Una vez que hayas instalado la CLI, inicia sesi贸n con el siguiente comando:

heroku login

Verifica que el correo electr贸nico correcto est茅 conectado con:

heroku auth:whoami

Crear una aplicaci贸n

Visita dashboard.heroku.com para acceder a tu cuenta, y crea una aplicaci贸n nueva desde el men煤 desplegable en la esquina superior derecha. Heroku te har谩 algunas preguntas, como la regi贸n y el nombre de la aplicaci贸n, tan solo sigue las indicaciones.

Git

Heroku usa Git para desplegar tu aplicaci贸n, por lo que deber谩s colocar tu proyecto en un repositorio de Git, si a煤n no lo est谩.

Inicializar Git

Si necesitas agregar Git a tu proyecto, ingresa el siguiente comando en Terminal:

git init

Master

Debes decidirte por una rama y ce帽irte a ella para desplegar en Heroku, como la rama main o master. Aseg煤rate de que todos los cambios se hayan registrado en esta rama antes de hacer push.

Comprueba tu rama actual con:

git branch

El asterisco indica la rama actual.

* main
  commander
  other-branches

!!! note "Nota" Si no ves ning煤n resultado y acabas de ejecutar git init, primero deber谩s hacer un commit de tu c贸digo y luego ver谩s el resultado del comando git branch.

Si actualmente no est谩s en la rama correcta, cambia a ella escribiendo (para el caso de main):

git checkout main

Commit de cambios

Si este comando produce resultados, entonces tienes cambios sin commit.

git status --porcelain

Confirmalos con lo siguiente

git add .
git commit -m "a description of the changes I made"

Conectar con Heroku

Conecta tu aplicaci贸n con heroku (reemplaza con el nombre de tu aplicaci贸n).

$ heroku git:remote -a your-apps-name-here

Establecer Buildpack

Establece el buildpack para ense帽ar a heroku c贸mo tratar con vapor.

heroku buildpacks:set vapor/vapor

Archivo de versi贸n de Swift

El buildpack que agregamos busca un archivo .swift-version para saber qu茅 versi贸n de Swift usar. (Reemplace 5.8.1 con la versi贸n que requiera su proyecto).

echo "5.8.1" > .swift-version

Esto crea .swift-version con 5.8.1 como su contenido.

Procfile

Heroku usa el Procfile para saber c贸mo ejecutar tu aplicaci贸n, en nuestro caso debe verse as铆:

web: App serve --env production --hostname 0.0.0.0 --port $PORT

Podemos crear esto con el siguiente comando de terminal

echo "web: App serve --env production" \
  "--hostname 0.0.0.0 --port \$PORT" > Procfile

Confirmar cambios

Acabamos de agregar estos archivos, pero no est谩n confirmados. Si hacemos push, heroku no los encontrar谩.

Conf铆rmarlos con lo siguiente.

git add .
git commit -m "adding heroku build files"

Despliegue en Heroku

Est谩s listo para desplegar, ejecuta esto desde la terminal. Puede que la compilaci贸n tarde un poco de tiempo, esto es normal.

git push heroku main

Escalabilidad

Una vez que hayas realizado una build con 茅xito, debes agregar al menos un servidor. Los precios comienzan en $5/mes para el plan Eco (consulta precios), aseg煤rate de tener configurado el pago en Heroku. Luego, para un solo trabajador web (worker):

heroku ps:scale web=1

Despliegue continuo

Cada vez que quieras actualizar, solo tienes que obtener los 煤ltimos cambios en main y enviarlos a heroku y se volver谩 a desplegar.

Postgres

Agregar base de datos PostgreSQL

Visita tu aplicaci贸n en dashboard.heroku.com y ve a la secci贸n Add-ons.

Desde aqu铆 entra en postgres y ver谩s una opci贸n para Heroku Postgres. Selecci贸nala.

Elige el plan Eco por $5/mes (consulta precios) y realiza la instalaci贸n. Heroku har谩 el resto.

Una vez que termines, ver谩s que la base de datos aparece en la pesta帽a Resources.

Configura la base de datos

Ahora tenemos que indicarle a nuestra aplicaci贸n c贸mo acceder a la base de datos. En el directorio de nuestra aplicaci贸n, ejecut茅mosla.

heroku config

Esto generar谩 una salida similar a esta

=== today-i-learned-vapor Config Vars
DATABASE_URL: postgres://cybntsgadydqzm:2d9dc7f6d964f4750da1518ad71hag2ba729cd4527d4a18c70e024b11cfa8f4b@ec2-54-221-192-231.compute-1.amazonaws.com:5432/dfr89mvoo550b4

Aqu铆 DATABASE_URL representar谩 nuestra base de datos postgres. NUNCA codifiques de manera est谩tica la URL desde aqu铆, heroku la rotar谩 y romper谩 tu aplicaci贸n. Adem谩s, es una mala pr谩ctica. En su lugar, lee la variable de entorno en tiempo de ejecuci贸n.

El complemento Heroku Postgres requiere que todas las conexiones sean cifradas. Los certificados que utilizan los servidores Postgres son internos a Heroku, por lo que se debe configurar una conexi贸n TLS no verificada.

El siguiente fragmento muestra c贸mo lograr ambas cosas:

if let databaseURL = Environment.get("DATABASE_URL") {
    var tlsConfig: TLSConfiguration = .makeClientConfiguration()
    tlsConfig.certificateVerification = .none
    let nioSSLContext = try NIOSSLContext(configuration: tlsConfig)

    var postgresConfig = try SQLPostgresConfiguration(url: databaseURL)
    postgresConfig.coreConfiguration.tls = .require(nioSSLContext)

    app.databases.use(.postgres(configuration: postgresConfig), as: .psql)
} else {
    // ...
}

No olvides hacer commit de estos cambios.

git add .
git commit -m "configured heroku database"

Revertir tu base de datos

Puedes revertir o ejecutar otros comandos en heroku con el comando run.

Para revertir tu base de datos:

heroku run App -- migrate --revert --all --yes --env production

Para migrar:

heroku run App -- migrate --env production