Laravel · Deploy+

Hosting para Laravel, con deploy en cada push.

PHP 8.3 a 8.5, Composer, Node para Vite, MySQL 8 y Redis, ya preparados. Conectas el repositorio y cada push publica una versión nueva con tus migraciones, sin corte; si algo sale mal, vuelves a la anterior en segundos.
tuapp.com producción

Deploy+v42 publicada

main · a91f3c2 · hace 3 min

  • PHP 8.4 OPcache · Composer 2 ✓
  • MySQL 8 tuapp_prod · 214 MB ✓
  • Redis caché en memoria ✓
  • Scheduler schedule:run · hace 12 s
  • Colas default · 0 pendientes ✓

PHP 8.1 a 8.5

la versión que pida tu Laravel, por proyecto

Deploy+ incluido

desde GitHub, GitLab, Bitbucket o Gitea

Redis incluido

caché en todos los planes; persistente desde Avanza

Rollback en segundos

las últimas versiones siguen en el servidor

Requisitos

Lo que necesita una app Laravel, sin montar servidor.

Los requisitos de la documentación de Laravel, uno a uno, frente a lo que trae cualquier plan de hosting de Hostsuar.
  • PHP 8.3 o superior · Laravel 12: 8.2 De la 5.4 a la 8.5, con la versión que quieras en cada proyecto.
  • Extensiones ctype, curl, dom, fileinfo, filter, hash, mbstring, openssl, pcre, pdo, session, tokenizer, xml Disponibles en el selector de PHP, junto a intl, gd, redis o imagick.
  • Dependencias Composer 2 En la terminal de tu cuenta y en el script de Deploy+.
  • Assets Node y npm para Vite Node por NVM: Deploy+ lo instala antes si tu script lo usa.
  • Base de datos MySQL 8, PostgreSQL o SQLite MySQL 8, y Deploy+ crea la base y escribe el .env al conectar el repositorio.
  • Caché, colas y sesiones database por defecto desde Laravel 11 Colas y sesiones en tu MySQL o, desde Avanza, en Redis persistente; para la caché, Redis incluido en todos los planes.
  • Scheduler cron cada minuto con schedule:run Deploy+ lo deja en tu cron al publicar, con el PHP de tu versión.
  • Despliegue Git y SSH Deploy+ con webhook firmado; SSH y Git en tu cuenta, al activarlo.

Requisitos según la documentación de Laravel.

Deploy+

El último tramo, resuelto.

El código ya lo tienes en Git. Deploy+ se encarga de llevarlo a producción como lo harías tú en un servidor propio, con el perfil de Laravel ya preparado.

Despliegue

Un push, una versión nueva, cero segundos de corte

Deploy+ clona el commit en su propia carpeta, ejecuta Composer, el build de Vite, las migraciones y php artisan optimize, y solo si todo sale bien cambia el enlace que la publica. Si un paso falla, la versión anterior sigue en línea.
webhook firmado perfil Laravel sin corte

Deploy #42 · main

perfil Laravel

› git clone a91f3c2 1,8 s

› composer install --no-dev --optimize-autoloader 12,4 s

› npm ci && npm run build vite 21,0 s

› php artisan migrate --force 0,9 s

› php artisan optimize config · rutas · vistas 1,2 s

releases/42 → current 0 s de corte

El perfil

Sabe dónde van public, storage y el .env

Publica desde public, deja storage y el .env fuera del código para que sobrevivan a cada versión y, si lo marcas, crea la base de datos y escribe la conexión.

.env + storage

compartidos entre versiones; el .env lo editas desde el panel

Compartido entre versiones

~/deploy/tuapp/

shared/ → releases/20260905-1012/

.enveditable

storage/del perfil

public/uploads/tuya

Enlazadas en cada versión nueva; un rollback tampoco las toca.

Scheduler y colas

El scheduler por cron, las colas al momento

schedule:run cada minuto con el PHP de tu app. Desde Avanza, tu worker de colas u Horizon se quedan en marcha como procesos persistentes y vuelven a arrancar solos si caen. En cualquier plan, el scheduler puede lanzar un worker que procesa la cola y se para al vaciarla.
schedule:run queue:work Horizon procesos persistentes

Una línea de cron

cada minuto

* * * * * php ~/tuapp/current/artisan schedule:run

routes/console.php

  • queue:work --stop-when-empty cada minuto
  • emails:resumen-diario 08:00
  • model:prune 02:00
  • siguiente ejecución

Rollback

Volver atrás tarda segundos

El historial guarda cada despliegue con su commit, quién lo lanzó y el registro entero. Las últimas versiones siguen en el servidor: volver a una no clona nada.

5 versiones

guardadas por defecto; tú decides cuántas

Historial de despliegues

5 versiones guardadas
FechaDisparadorTiempo
hoy 10:12 · a91f3c2 Push 38 s
ayer 18:30 · e07b9d4 Manual 41 s
ayer 11:05 · 4c1d8e7 Rollback 2 s
lun 09:48 · 4c1d8e7 Push 35 s

ayer 18:30 · e07b9d4

la versión sigue en el servidor

Volver a esta versión

El script

El script que recomendamos para Laravel.

Parte del que propone el perfil Laravel y le añade las migraciones. Corre en la versión nueva antes de publicarla: si un comando falla, no se publica. Después, Deploy+ reinicia tus workers persistentes con el código nuevo.

npm ci && npm run build
solo si tu app compila assets con Vite; Deploy+ instala Node antes
migrate --force
las migraciones corren antes de publicar, contra la base de producción
optimize
cachea configuración, rutas, vistas y eventos de la versión nueva; los workers persistentes los reinicia Deploy+ al publicarla
Script de despliegue · perfil Laravel
  1. 1composer install --no-dev --optimize-autoloader --no-interaction
  2. 2npm ci && npm run build
  3. 3php artisan migrate --force
  4. 4php artisan optimize
Variables, comandos bloqueados y Node, en la guía de Deploy+

Forge, VPS o hosting

¿Necesitas un servidor para tu Laravel?

Para la mayoría de apps, no. Lo que cambia es quién administra el servidor y qué procesos puedes tener vivos.
  • El servidor

    Un VPS con Forge
    Lo administras tú; Forge lo configura
    Un VPS a mano
    Lo montas y lo administras tú
    Hostsuar
    Lo administramos nosotros
  • Parches y seguridad

    Cualquier VPS
    A tu cargo
    Hostsuar
    A nuestro cargo, con antivirus y aislamiento
  • Despliegue

    Un VPS con Forge
    Forge, con tu script
    Un VPS a mano
    Tu propio script
    Hostsuar
    Deploy+ incluido, con rollback
  • Copias

    Cualquier VPS
    Las que configures
    Hostsuar
    80 puntos de restauración incluidos
  • Colas y Horizon

    Cualquier VPS
    Sí
    Hostsuar
    Sí, en marcha desde Avanza
  • WebSockets (Reverb)

    Cualquier VPS
    Sí
    Hostsuar
    Con un servicio compatible con Pusher; te ayudamos a conectarlo
  • Octane

    Cualquier VPS
    Sí
    Hostsuar
    No: PHP lo sirve LiteSpeed
  • Soporte

    Un VPS con Forge
    El de la herramienta
    Un VPS a mano
    El tuyo
    Hostsuar
    Técnicos que trabajan con Laravel

Lo que no encaja es lo que necesita su propio servidor delante: Octane, porque aquí PHP lo sirve LiteSpeed, y Reverb, un servidor que escucha en su propio puerto, algo a lo que no damos soporte. Para el tiempo real, Laravel habla de serie con Pusher y servicios compatibles. Workers de colas y Horizon se quedan en marcha como procesos persistentes desde Avanza: administrar un servidor para eso es trabajo que no hace falta.

Dudas

Laravel en un hosting, sin letra pequeña.

¿Puedo usar colas de Laravel en un hosting?

Sí, de dos formas. Desde el plan Avanza, un queue:work u Horizon se queda en marcha como proceso persistente: procesa cada trabajo al momento y, si se cae, vuelve a arrancar solo. Avanza admite 3 procesos, Max 5 y Elástico 8. En cualquier plan, el scheduler puede lanzar cada minuto un queue:work --stop-when-empty que procesa lo pendiente y termina. Todo cuenta dentro de los recursos de tu plan.

¿Funcionan Horizon, Reverb y Octane?

Horizon, sí, desde el plan Avanza: lo dejas en marcha como proceso persistente sobre un Redis persistente, los dos desde el área de clientes. Reverb, no en el propio hosting: es un servidor que escucha en su propio puerto, y no damos soporte a programas así. Para los WebSockets conectas tu app a un servicio compatible con Pusher, como Pusher Channels o Ably, que Laravel soporta de serie, y te ayudamos a conectarlo. Octane, no: aquí PHP lo sirve LiteSpeed, y Octane necesita su propio servidor de aplicación (Swoole, RoadRunner o FrankenPHP). Livewire, Inertia, Filament, Sanctum, Socialite o Scout funcionan sin nada especial.

¿Qué versión de PHP necesito?

Laravel 13 pide PHP 8.3 o superior y Laravel 12, PHP 8.2. Tienes de la 5.4 a la 8.5 y la eliges por dominio o por carpeta, así que una app antigua y una nueva conviven en la misma cuenta. En una web publicada con Deploy+, la versión se fija en el .htaccess de tu repositorio, para que viaje con el código en cada despliegue.

¿Puedo tener un entorno de pruebas?

Sí. Conecta el mismo repositorio dos veces: la rama main al dominio y, por ejemplo, develop a staging.tuapp.com, cada una con su .env y su base de datos. Cada push a una rama despliega solo en su sitio.

¿Tengo SSH y Composer?

Sí. Activas el acceso SSH desde las opciones del servicio en el área de clientes, y además tienes la terminal integrada de cPanel, con Git y Composer. Y desde Deploy+ puedes lanzar un comando de artisan sobre la versión publicada sin abrir ninguna terminal.

¿Y si vengo de Forge o de otro hosting?

Conectas el mismo repositorio y Deploy+ lo despliega igual; lo que hay que traer es la base de datos y lo que guardes en storage. Si vienes de otro proveedor, te ayudamos con el traslado.

Guías relacionadas en nuestra documentación

Tu próximo push, en producción.

Cualquier plan trae Deploy+, Redis y el PHP que pide tu versión de Laravel. Lo ha montado gente que trabaja con Laravel cada día; si vienes de otro proveedor, te ayudamos a traerlo. Planes desde 4,10 €/mes.