mirror of https://github.com/vapor/docs.git
Feature/translation EN > ES heroku.es.md (#1045)
This commit is contained in:
parent
9e502b7b6e
commit
dc370aab51
|
|
@ -0,0 +1,236 @@
|
||||||
|
# ¿Qué es Heroku?
|
||||||
|
|
||||||
|
Heroku es una solución de alojamiento todo en uno muy popular. Puedes encontrar más información en [heroku.com](https://www.heroku.com)
|
||||||
|
|
||||||
|
## Registrarse
|
||||||
|
|
||||||
|
Necesitarás una cuenta de Heroku. Si no tienes una, regístrate aquí: [https://signup.heroku.com/](https://signup.heroku.com/)
|
||||||
|
|
||||||
|
## Instalar CLI
|
||||||
|
|
||||||
|
Asegúrate de haber instalado la herramienta CLI de Heroku.
|
||||||
|
|
||||||
|
### HomeBrew
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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](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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
heroku login
|
||||||
|
```
|
||||||
|
|
||||||
|
Verifica que el correo electrónico correcto esté conectado con:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git branch
|
||||||
|
```
|
||||||
|
|
||||||
|
El asterisco indica la rama actual.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
* 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**):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Commit de cambios
|
||||||
|
|
||||||
|
Si este comando produce resultados, entonces tienes cambios sin commit.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git status --porcelain
|
||||||
|
```
|
||||||
|
|
||||||
|
Confirmalos con lo siguiente
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ heroku git:remote -a your-apps-name-here
|
||||||
|
```
|
||||||
|
|
||||||
|
### Establecer Buildpack
|
||||||
|
|
||||||
|
Establece el buildpack para enseñar a heroku cómo tratar con vapor.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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](https://www.heroku.com/pricing#containers)), asegúrate de tener configurado el pago en Heroku. Luego, para un solo trabajador web (worker):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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](https://www.heroku.com/pricing#data-services)) 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.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
heroku config
|
||||||
|
```
|
||||||
|
|
||||||
|
Esto generará una salida similar a esta
|
||||||
|
|
||||||
|
```none
|
||||||
|
=== 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](https://devcenter.heroku.com/changelog-items/2035) 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:
|
||||||
|
|
||||||
|
```swift
|
||||||
|
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.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
heroku run App -- migrate --revert --all --yes --env production
|
||||||
|
```
|
||||||
|
|
||||||
|
Para migrar:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
heroku run App -- migrate --env production
|
||||||
|
```
|
||||||
|
|
@ -22,13 +22,13 @@ See alternative install options here: [https://devcenter.heroku.com/articles/her
|
||||||
|
|
||||||
### Logging in
|
### Logging in
|
||||||
|
|
||||||
once you've installed the cli, login with the following:
|
Once you've installed the cli, login with the following:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
heroku login
|
heroku login
|
||||||
```
|
```
|
||||||
|
|
||||||
verify that the correct email is logged in with:
|
Verify that the correct email is logged in with:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
heroku auth:whoami
|
heroku auth:whoami
|
||||||
|
|
@ -54,7 +54,7 @@ git init
|
||||||
|
|
||||||
You should decide for one branch and stick to that for deploying to Heroku, like the **main** or **master** branch. Make sure all changes are checked into this branch before pushing.
|
You should decide for one branch and stick to that for deploying to Heroku, like the **main** or **master** branch. Make sure all changes are checked into this branch before pushing.
|
||||||
|
|
||||||
Check your current branch with
|
Check your current branch with:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git branch
|
git branch
|
||||||
|
|
@ -71,7 +71,6 @@ The asterisk indicates current branch.
|
||||||
!!! note
|
!!! note
|
||||||
If you don’t see any output and you’ve just performed `git init`. You’ll need to commit your code first then you’ll see output from the `git branch` command.
|
If you don’t see any output and you’ve just performed `git init`. You’ll need to commit your code first then you’ll see output from the `git branch` command.
|
||||||
|
|
||||||
|
|
||||||
If you’re _not_ currently on the right branch, switch there by entering (for **main**):
|
If you’re _not_ currently on the right branch, switch there by entering (for **main**):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -111,7 +110,7 @@ heroku buildpacks:set vapor/vapor
|
||||||
|
|
||||||
### Swift version file
|
### Swift version file
|
||||||
|
|
||||||
The buildpack we added looks for a **.swift-version** file to know which version of swift to use. (replace 5.8.1 with whatever version your project requires.)
|
The buildpack we added looks for a **.swift-version** file to know which version of swift to use. (Replace 5.8.1 with whatever version your project requires.)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
echo "5.8.1" > .swift-version
|
echo "5.8.1" > .swift-version
|
||||||
|
|
@ -119,7 +118,6 @@ echo "5.8.1" > .swift-version
|
||||||
|
|
||||||
This creates **.swift-version** with `5.8.1` as its contents.
|
This creates **.swift-version** with `5.8.1` as its contents.
|
||||||
|
|
||||||
|
|
||||||
### Procfile
|
### Procfile
|
||||||
|
|
||||||
Heroku uses the **Procfile** to know how to run your app, in our case it needs to look like this:
|
Heroku uses the **Procfile** to know how to run your app, in our case it needs to look like this:
|
||||||
|
|
@ -128,7 +126,7 @@ Heroku uses the **Procfile** to know how to run your app, in our case it needs t
|
||||||
web: App serve --env production --hostname 0.0.0.0 --port $PORT
|
web: App serve --env production --hostname 0.0.0.0 --port $PORT
|
||||||
```
|
```
|
||||||
|
|
||||||
we can create this with the following terminal command
|
We can create this with the following terminal command
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
echo "web: App serve --env production" \
|
echo "web: App serve --env production" \
|
||||||
|
|
@ -150,7 +148,7 @@ git commit -m "adding heroku build files"
|
||||||
|
|
||||||
You're ready to deploy, run this from the terminal. It may take a while to build, this is normal.
|
You're ready to deploy, run this from the terminal. It may take a while to build, this is normal.
|
||||||
|
|
||||||
```none
|
```bash
|
||||||
git push heroku main
|
git push heroku main
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -164,7 +162,7 @@ heroku ps:scale web=1
|
||||||
|
|
||||||
### Continued Deployment
|
### Continued Deployment
|
||||||
|
|
||||||
Any time you want to update, just get the latest changes into main and push to heroku and it will redeploy
|
Any time you want to update, just get the latest changes into main and push to heroku and it will redeploy.
|
||||||
|
|
||||||
## Postgres
|
## Postgres
|
||||||
|
|
||||||
|
|
@ -216,7 +214,7 @@ if let databaseURL = Environment.get("DATABASE_URL") {
|
||||||
|
|
||||||
Don't forget to commit these changes
|
Don't forget to commit these changes
|
||||||
|
|
||||||
```none
|
```bash
|
||||||
git add .
|
git add .
|
||||||
git commit -m "configured heroku database"
|
git commit -m "configured heroku database"
|
||||||
```
|
```
|
||||||
|
|
@ -231,7 +229,7 @@ To revert your database:
|
||||||
heroku run App -- migrate --revert --all --yes --env production
|
heroku run App -- migrate --revert --all --yes --env production
|
||||||
```
|
```
|
||||||
|
|
||||||
To migrate
|
To migrate:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
heroku run App -- migrate --env production
|
heroku run App -- migrate --env production
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue