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:
- Sposta il contenuto della cartella
public/
(non la cartella stessa) nella root del dominio. - 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/
ebootstrap/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.