diff --git a/docs/deploy/digital-ocean.es.md b/docs/deploy/digital-ocean.es.md new file mode 100644 index 000000000..6a9890e8b --- /dev/null +++ b/docs/deploy/digital-ocean.es.md @@ -0,0 +1,184 @@ +# Despliegue en DigitalOcean + +Esta guía te mostrará cómo desplegar una aplicación simple "Hola mundo" de Vapor en un [Droplet](https://www.digitalocean.com/products/droplets/). Para seguir esta guía, debes tener una cuenta de [DigitalOcean](https://www.digitalocean.com) con la facturación configurada. + +## Crear Servidor + +Comencemos por instalar Swift en un servidor Linux. Usa el menú de creación para crear un nuevo Droplet. + +![Crear Droplet](../images/digital-ocean-create-droplet.png) + +En distribuciones, selecciona Ubuntu 22.04 LTS. La siguiente guía utilizará esta versión como ejemplo. + +![Distribución Ubuntu](../images/digital-ocean-distributions-ubuntu.png) + +!!! note "Nota" + Puedes seleccionar cualquier distribución de Linux con una versión compatible con Swift. Puedes consultar qué sistemas operativos son compatibles oficialmente en la página [Versiones de Swift](https://swift.org/download/#releases). + +Después de seleccionar la distribución, elije el plan y la región del centro de datos que prefieras. Luego, configura una clave SSH para acceder al servidor después de que se cree. Finalmente, haz clic en crear Droplet y espera a que se inicie el nuevo servidor. + +Cuando el nuevo servidor esté listo, pasa el cursor sobre la dirección IP del Droplet y haz clic en copiar. + +![Droplet List](../images/digital-ocean-droplet-list.png) + +## Configuración Inicial + +Abre tu terminal y conéctate al servidor como root usando SSH. + +```sh +ssh root@your_server_ip +``` + +DigitalOcean tiene una guía detallada para la [configuración inicial del servidor en Ubuntu 22.04](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-22-04). Esta guía cubrirá rápidamente los conceptos básicos. + +### Configurar el Firewall + +Permitir OpenSSH a través del firewall y habilitarlo. + +```sh +ufw allow OpenSSH +ufw enable +``` + +### Añadir Usuario + +Crea un nuevo usuario además de `root`. Esta guía llama al nuevo usuario `vapor`. + +```sh +adduser vapor +``` + +Permite que el usuario recién creado use `sudo`. + +```sh +usermod -aG sudo vapor +``` + +Copia las claves SSH autorizadas del usuario root al usuario recién creado. Esto te permitirá ingresar por SSH como el nuevo usuario. + +```sh +rsync --archive --chown=vapor:vapor ~/.ssh /home/vapor +``` + +Finalmente, sal de la sesión SSH actual e inicia sesión como el usuario recién creado. + +```sh +exit +ssh vapor@your_server_ip +``` + +## Instalar Swift + +Ahora que has creado un nuevo servidor Ubuntu y has iniciado sesión como usuario no root, puedes instalar Swift. + +### Instalación automática con la herramienta Swiftly CLI (recomendada) + +Visita el [sitio web de Swiftly](https://swiftlang.github.io/swiftly/) para obtener instrucciones sobre cómo instalar Swiftly y Swift en Linux. Después de eso, instala Swift con el siguiente comando: + +#### Uso Básico + +```sh +$ swiftly install latest + +Fetching the latest stable Swift release... +Installing Swift 5.9.1 +Downloaded 488.5 MiB of 488.5 MiB +Extracting toolchain... +Swift 5.9.1 installed successfully! + +$ swift --version + +Swift version 5.9.1 (swift-5.9.1-RELEASE) +Target: x86_64-unknown-linux-gnu +``` + +## Instalar Vapor con Vapor Toolbox + +Ahora que Swift está instalado, instalemos Vapor con Vapor Toolbox. Necesitarás compilar la toolbox desde el código fuente. Consulta las [versiones](https://github.com/vapor/toolbox/releases) de la toolbox en GitHub para encontrar la última versión. En este ejemplo, estamos usando 18.6.0. + +### Clonar y Compilar Vapor + +Clona el repositorio de Vapor Toolbox. + +```sh +git clone https://github.com/vapor/toolbox.git +``` + +Consulta la última versión. + +```sh +cd toolbox +git checkout 18.6.0 +``` + +Compila Vapor y mueve el binario a tu ruta. + +```sh +swift build -c release --disable-sandbox --enable-test-discovery +sudo mv .build/release/vapor /usr/local/bin +``` + +### Crear un Proyecto Vapor + +Utiliza el nuevo comando de proyecto de la toolbox para iniciar un proyecto. + +```sh +vapor new HelloWorld -n +``` + +!!! tip "Consejo" + El indicador `-n` brinda una plantilla básica al responder automáticamente "no" a todas las preguntas. + +![Vapor Splash](../images/vapor-splash.png) + +Una vez que finalice el comando, cambia a la carpeta recién creada: + +```sh +cd HelloWorld +``` + +### Abrir Puerto HTTP + +Para acceder a Vapor en tu servidor, abre un puerto HTTP. + +```sh +sudo ufw allow 8080 +``` + +### Ejecutar + +Ahora que Vapor está configurado y tenemos un puerto abierto, ejecutémoslo. + +```sh +swift run App serve --hostname 0.0.0.0 --port 8080 +``` + +Visita la IP de tu servidor a través del navegador o terminal local y deberías ver "It works!". La dirección IP es `134.122.126.139` en este ejemplo. + +``` +$ curl http://134.122.126.139:8080 +It works! +``` + +De vuelta a tu servidor, deberías ver los registros de la solicitud de prueba. + +``` +[ NOTICE ] Server starting on http://0.0.0.0:8080 +[ INFO ] GET / +``` + +Usa `CTRL+C` para salir del servidor. Puede tomar un segundo apagarlo. + +¡Felicitaciones por hacer que tu aplicación Vapor funcione en un Droplet de DigitalOcean! + +## Próximos Pasos + +El resto de esta guía indica recursos adicionales para mejorar tu despliegue. + +### Supervisor + +Supervisor es un sistema de control de procesos que puedes ejecutar y monitorear tu ejecutable de Vapor. Con la configuración de Supervisor, tu aplicación puede iniciarse automáticamente cuando se inicia el servidor y reiniciarse en caso de que falle. Obten más información sobre [Supervisor](../deploy/supervisor.md). + +### Nginx + +Nginx es un servidor y proxy HTTP extremadamente rápido, confiable y fácil de configurar. Si bien Vapor admite el servicio directo de solicitudes HTTP, el proxy detrás de Nginx puede proporcionar un mayor rendimiento, seguridad y facilidad de uso. Obten más información sobre [Nginx](../deploy/nginx.md). diff --git a/docs/deploy/digital-ocean.md b/docs/deploy/digital-ocean.md index 79c41ca36..8726995c2 100644 --- a/docs/deploy/digital-ocean.md +++ b/docs/deploy/digital-ocean.md @@ -129,7 +129,6 @@ vapor new HelloWorld -n !!! tip The `-n` flag gives you a bare bones template by automatically answering no to all questions. - ![Vapor Splash](../images/vapor-splash.png) Once the command finishes, change into the newly created folder: