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.
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/wZKx5mc9fCw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>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
.
[env]
LOG_LEVEL = "info"
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 deinclude=/etc/php8/php-fpm.d/*.conf
ainclude=/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 decommand=php-fpm8 -R --nodaemonize
acommand=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.