Written by Miguel Bonifaz
on September 15th, 2023

Cómo crear un servidor Laravel con Ploi (guía paso a paso)

En este post voy a mostrarte como crear un servidor para tu proyecto en Laravel usando Ploi, usando un dominio o una IP

Usando un Dominio

Para este ejemplo vamos a un dominio, si deseas usar solo una IP porque no posees un dominio, no te preocupes, el resto del post va a servirte y lo explicaré al final como poder usar la IP de tu servidor para mostrar tu proyecto, solo debes saltarte la parte en donde se va a agregar la DNS en nuestro dominio y agregar el dominio en nuestro servidor.

Vamos a crear una cuenta en 👉 Ploi y una cuenta en tu proveedor favorito de servicios en la nube como puede ser Digital Ocean , Hetzner, Vultr entre otros.
En Digital Ocean y Vultr, te permiten de forma gratis probar por un tiempo determinado y luego pasarías a pagar $4 mensuales el mínimo que ofrece entre los servicios que te acabo de mencionar.

¿Que es ploi?

Ploi es una herramienta de gestión de servidor, que te va a permitir crear, administrar y poder realizar deploy a tu aplicación en unos cuantos clics.

Una vez creado tu cuenta en ploi, te diriges a "Profile > Server providers", a este punto agregas tu cuenta dependiente del proveedor que desees usar, en mi caso estoy usando Hetzner, para poder generar tu api key de tu proveedor, puedes revisar 👉 aqui en la documentación de ploi

Una vez creado agregado tu proveedor favorito, vamos al panel en donde nos van a pedir agregar nuestra cuenta ya sea de Github, Bitbucket o Gitlab.

Una vez que ya hayas agregado tu cuenta, ahora sí podemos crear ya nuestro primer servidor para nuestra aplicación de Laravel usando Ploi.

Creando nuestro servidor

Nos dirigimos a la sección de servers del menú de la izquierda, ingresamos y damos click en el botón "Create Server" y estaríamos viendo algo así:

Creación server en ploiEn mi caso voy a usar Hetzner para crear mi servidor y los datos del formulario quedarían así: Yo escogí el servidor cpx11 que tiene un valor de €3.85 mensual.

Una vez llenado los datos, damos en Create Server y esperamos alrededor de 10 minutos que ploi se encargue de crear el servidor.

Una vez finalizado vamos a ver algo así 👇

Creando nuevo sitio

Damos click en nuestro servidor ya creado y luego nos va a pedir agregar un dominio, en este caso yo tengo el dominio miguelbonifaz.com, a este punto puedes agregar como dominio "my-domain.com" o si desean un subdominio, agregarían "subdomain.my-domain.com" , en mi caso agregaré "miguelbonifaz.com"


Realizas la vinculación de tu proyecto y con esto ya puedes instalar tu repositorio en tu servidor dándole en "Install repository"

Cuando se haya instalado el repositorio, Ploi te va a sugerir un script para poder realizar tu deploy

Si no te sale el mensaje, te dejo el código final de como debe lucir tu script 👇

cd /home/ploi/miguelbonifaz.com
git pull origin main
composer install --no-interaction --prefer-dist --optimize-autoloader
echo "" | sudo -S service php8.1-fpm reload

php artisan route:cache
php artisan view:clear
php artisan migrate --force

echo "🚀 Application deployed!"

Ajustando nuestro dominio con nuestro servidor

Si no vas a usar un dominio, puedes saltarte a la sección del deploy directamente

Antes de seguir trabajando en ploi para realizar nuestro primer deploy, vamos a vincular nuestro dominio a nuestro servidor.

Agregando las DNS a nuestro dominio

Las DNS dependen de nuestro servidor, para Digital Ocean es diferente al de Hetzner, las DNS de Hetzner son:

helium.ns.hetzner.de
hydrogen.ns.hetzner.de
oxygen.ns.hetzner.de

a diferencia de Digital Ocean son

ns1.digitalocean.com
ns2.digitalocean.com
ns3.digitalocean.com

Vamos a nuestro proveedor donde tenemos nuestro dominio, yo tengo alojado mi dominio en Namecheap y agregamos nuestras DNS

Una vez agregado, vamos a nuestro proveedor donde creamos nuestro servidor para agregar nuestro dominio, que agregamos, en hetzner se ve así.

Si estás usando Digital Ocean, debería lucir más o menos así, lo agregas en Networking > Domains

Una vez que hayamos configurado las DNS en nuestro dominio y añadido nuestro dominio en Hetzner o Digital Ocean etc, estaremos listos para realizar neustro deploy.

Deploy

Antes de realizar el deploy vamos a realizar lo siguiente:

Ajustar nuestra base de datos

Cuando el servidor fue creado, nos tuvo que haber llegado un correo con las credenciales de nuestro sitio.

En nuestro archivo .env agregamos nuestra base de datos, le damos click en el botón "Edit enviroment" y agregamos nuestra base de datos con las credenciales correspondiente

Nota: El nombre de usuario tambien viene ser con el nombre ploi

Time to deploy 🚀

Ahora si vamos a poder realizar nuestro deploy para nuestra aplicación, le damos click en "Deploy Now" y se asume que el deploy se habrá hecho con éxito.

Ahora cuando visites tu dominio, probablemente te va a salir este mensaje

Vemos este mensaje porque en tu archivo .env esta en APP_ENV=local , y puedes solucionarlo dando click en "Fix it for me" en el mensaje que te sale en el dashboard de ploi dentro de tu sitio, al igual que también sugiero que le des click en "Fix it for me" en el otro mensaje que dice "You have composer install in your deploy script, without the --no-dev flag......."

Vamos a la sección que dice Laravel para generar nuestra key, le damos en Custom commands y agregamos la opción key:generate , ¿por qué se escribió sin el php artisan? Eso sucede porque ploi por detrás antepone ya el php artisan

Una vez que lo hayas agregado, si no vez el botón, le das f5 y luego le das click en el botón que dice key:generate y con esto se habrá generado correctamente nuestro key.

Ahora sí, vamos a visitar nuestro dominio y deberíamos ver el home de Laravel.

Y con esto ya tendría nuestra aplicación web en línea y funcionando, y como última cosa, si deseas agregarle un certificado a tu aplicación web, ploi te ayuda agregarlo a 1 solo click.

Vamos a Sites > Ingresamos a nuestro dominio > SSL y luego le damos en "Add Certificate" y con eso debería instalarse nuestro certificado

Usando la IP de tu servidor

Si en el caso de que no cuentes con un dominio y quisieras usar solo tu IP para mostrar tu aplicación web, puedes hacerlo de la siguiente manera, vamos a configurar nuestro archivo NGINX, nos dirigimos Sites > Ingresamos a nuestro dominio > Manage > Damos click en NGINX configuration , y luego veriamos algo así 👇

Lo único que tenemos que hacer aquí son 2 cosas:

  • Agregamos "listen 5.161.226.104;" aqui iría el ip de tu servidor, si no sabes cuales, en esa misma vista en la parte superior a la izquierda esta la IP

  • Comentamos la linea donde dice "server_name" y agregamos una nueva linea que diga "server_name 5.161.226.104;" con nuestra IP

El resultado final se vería así 👇

Ahora solo le damos click en Test configuration y luego click en Deploy y con eso, ya podríamos ir a nuestra IP y ver nuestra app ya en línea.