Desplegando Laravel en Fly.io

Fly.io nos permite desplegar web apps en 21 regiones en todo el mundo. Reduciendo la latencia entre usuario y app.

Hacer un despliegue de cualquier app desarrollada en Laravel es bastante sencillo.

Instalaci贸n y registro en Fly.io

Instalamos la l铆nea de comandos flyctl con Homebrew. brew install flyctl. Reg铆strate a fly.io si a煤n no lo est谩s. flyctl auth signup.

Configurar Laravel para Fly.io

Comenzamos con un proyecto Laravel nuevo. laravel new hola-fly-laravel. Lanzamos flyctl launch que nos configura la App para Fly. Le asignamos un nombre. Elegimos una organizaci贸n. Una regi贸n para desplegarla. La primera opci贸n ser谩 la regi贸n m谩s cercana que nos ha detectado.

El programa nos preguntar谩 por nuestra APP_KEY. Podemos generar una si a煤n no la tenemos. Lanzamos php artisan key:generate --show en una nueva ventana de nuestro terminal. Cuando pregunte si queremos realizar un despliegue, respondemos no.

Abrimos nuestro proyecto con nuestro editor. Vemos que se han generado los archivos fly.toml, Dockerfile y la carpeta docker. Para configurar la URL de nuestra app, modificamos el archivo de configuraci贸n fly.toml. Fly nos genera una URL con base en el nombre de nuestra App. hola-fly-laravel.fly.dev.

1[env]
2 LOG_LEVEL = "info"
3 APP_URL = "hola-fly-laravel.fly.dev"

Desplegando

Finalmente desplegaremos nuestra App. fly deploy. Voil脿. Nuestra App Laravel est谩 desplegada. Podemos abrirla en nuestro navegador con fly open.

PHP 8.1

El archivo Dockerfile nos ha desplegado PHP 8.0. Pero ser铆a bueno tener PHP 8.1

Modificamos Dockerfile y reemplazamos toda coincidencia de php8 a php81. Tambi茅n eliminaremos php8-pecl-mcrypt. Una extensi贸n obsoleta en PHP 8.1. Y a帽adimos un enlace simb贸lico para ejecutar php81 como php. ln -s /usr/bin/php81 /usr/bin/php. Realizamos los siguientes ajustes a los siguientes archivos.

  • docker/app.conf: cambiar la referencia de /var/run/php/php8-fpm.sock a /var/run/php/php81-fpm.sock.
  • docker/php-fpm.conf: cambiar la referencia de include=/etc/php8/php-fpm.d/*.conf a include=/etc/php81/php-fpm.d/*.conf
  • docker/server.conf: cambiar la referencia de /var/run/php/php8-fpm.sock a /var/run/php/php81-fpm.sock
  • docler/supervisor.conf: cambiar la referencia de command=php-fpm8 -R --nodaemonize a command=php-fpm81 -R --nodaemonize

Volvemos a hacer el despliegue. fly deploy. Nuestra App ahora corre sobre PHP 8.1

Scheduler

Tambi茅n podemos ejecutar tareas programadas. Modificamos docker/supervisor.conf y descomentamos la secci贸n [program:laravel-schedule].

Gracias a Fly.io, tenemos Laravel desplegado en una regi贸n cercana a nosotros. Corriendo la 煤ltima versi贸n de PHP y ejecutando tareas programadas.