Deploy di un progetto Laravel su hosting condiviso: guida completa passo passo

Laravel è uno dei framework PHP più amati e usati, soprattutto per la sua eleganza e semplicità nello sviluppo. Tuttavia, molti sviluppatori si trovano in difficoltà quando si tratta di pubblicare un progetto Laravel su un hosting condiviso, dove spesso mancano strumenti come SSH o il controllo completo sull’ambiente server.

In questa guida completa, vedremo passo passo come fare il deploy di un’app Laravel su un piano di hosting condiviso, come quelli offerti da HostingPerTe.

Per seguire questa guida è importante avere un ambiente di partenza adeguato. Assicurati di avere già sviluppato un progetto Laravel funzionante in locale, che potrai poi trasferire sul server. Il piano di hosting condiviso deve supportare almeno PHP 8.1, versione minima richiesta da Laravel 10. Inoltre, è necessario avere accesso al pannello di controllo del tuo hosting (come cPanel o Plesk), da cui potrai gestire i file e configurare il database. A tal proposito, dovrai creare un database MySQL con utente e password, che utilizzerai nella configurazione dell’applicazione.

Prepara il progetto in locale

Assicurati che il tuo progetto Laravel sia pronto per la produzione. Questo significa ottimizzare il codice, rimuovere dipendenze inutili e predisporre la cache delle configurazioni, delle rotte e delle viste, per migliorare le performance e ridurre il carico sul server.

composer install --no-dev --optimize-autoloader
php artisan config:cache
php artisan route:cache
php artisan view:cache

Se usi asset frontend con Vite, esegui anche:

npm run build

Adatta la struttura per l’hosting condiviso

Laravel è progettato per puntare alla cartella public/ come root del sito. In un hosting condiviso, però, la root pubblica è spesso direttamente la root dell’account (es. public_html).

Soluzione:

  1. Sposta il contenuto della cartella public/ (non la cartella stessa) nella root del dominio.
  2. Modifica il file index.php:
// Originale
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
// Modificato
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';

Struttura originale

/tuo-progetto
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
│   ├── index.php
│   └── ...
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
└── .env

Struttura adattata per hosting condiviso

/public_html
├── app/
├── bootstrap/
├── config/
├── database/
├── index.php
├── css/
├── js/
├── immagini/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
└── .env

Attenzione: questa soluzione espone alcuni file interni nella root. Se hai esigenze di sicurezza più avanzate, valuta l’uso di un VPS.

Carica i file sul server

Puoi creare un archivio .zip del progetto, caricarlo via File Manager o FTP ed estrarlo nella root. Assicurati che storage/ e bootstrap/cache/ abbiano i permessi di scrittura corretti (775 o 777 se necessario).

Configura il database e il file .env

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=nome_database
DB_USERNAME=nome_utente
DB_PASSWORD=la_tua_password

APP_ENV=production
APP_DEBUG=false

Esegui comandi Artisan senza SSH.

Se non hai SSH, puoi usare file temporanei PHP. Esempio:

<?php
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';

use Illuminate\Contracts\Console\Kernel;

$kernel = $app->make(Kernel::class);
$kernel->call('migrate', ['--force' => true]);
echo "Migrazioni completate.";

Caricalo e apri via browser: tuodominio.it/migrate.php. Ricordati poi di eliminarlo.

Debug e problemi comuni

  • Errore 500: Controlla i log in storage/logs/ e verifica i permessi.
  • Permessi negati: Verifica storage/ e bootstrap/cache/.
  • Class not found o pagina bianca: Cache corrotta. Ricostruisci con php artisan config:cache.
  • Estensioni PHP mancanti: Verifica con phpinfo(). Estensioni comuni: mbstring, openssl, pdo.
  • Errore APP_KEY: Genera una nuova chiave con php artisan key:generate e copiala nel file .env.

Conclusioni

Anche se un hosting condiviso non è l’ambiente ideale per Laravel, con i giusti accorgimenti puoi pubblicare un’app funzionante anche su un piano economico. Se hai bisogno di performance superiori, valuta un piano VPS o cloud: HostingPerTe offre soluzioni scalabili e adatte a Laravel.

Per approfondire: Documentazione ufficiale Laravel.

Back to list