1 14/04/2026 10 min

Installare PrestaShop su Ubuntu 20.04 Server non è complicato, ma conviene farlo con ordine: prima il database, poi PHP con le estensioni giuste, quindi il web server, i permessi e infine il setup applicativo. Se salti i controlli iniziali, il classico risultato è una pagina bianca, un installer che si blocca o un backend lento già al primo accesso.

Qui trovi una procedura pratica per un’installazione pulita in ambiente LAMP o LEMP. Userò Ubuntu 20.04, ma la logica resta la stessa anche su release successive: cambia poco nei pacchetti, cambiano soprattutto i dettagli dei repository e delle versioni PHP disponibili.

Prerequisiti da mettere in fila prima di toccare PrestaShop

PrestaShop è sensibile a tre cose: versione PHP, estensioni caricate e stato del database. Prima di scaricare il CMS, verifica che il server sia già pronto a reggere il carico minimo dell’installer e del primo avvio.

Ti serve un server Ubuntu 20.04 aggiornato, accesso sudo, un dominio o almeno un record DNS puntato verso l’IP pubblico, e un web server funzionante. Per semplicità uso MariaDB, che su questa piattaforma è una scelta solida e prevedibile.

Prima verifica la versione di PHP disponibile: PrestaShop richiede una versione compatibile con la release che vuoi installare. Su Ubuntu 20.04 il pacchetto di default può essere troppo vecchio per alcune versioni recenti di PrestaShop, quindi se serve conviene usare un repository esterno per PHP 7.4 o superiore. Non dare per scontato che il pacchetto di sistema sia sufficiente.

1. Aggiornamento base del sistema

Parti con un aggiornamento completo del sistema. È banale, ma evita di inseguire errori dovuti a dipendenze vecchie o librerie incoerenti.

sudo apt update
sudo apt -y upgrade
sudo reboot

Dopo il riavvio, conferma che il sistema sia attivo e che il kernel non abbia lasciato il server in uno stato anomalo.

uname -a
systemctl --failed

Se `systemctl --failed` restituisce unità in errore, fermati lì: non ha senso installare un e-commerce sopra una base già instabile.

2. Installare stack web, PHP e database

Puoi usare Apache oppure Nginx. Apache è più diretto se vuoi partire veloce, Nginx è spesso più pulito in produzione quando hai già confidenza con PHP-FPM. Sotto trovi entrambi gli approcci, ma ne devi scegliere uno solo.

Opzione Apache

Installa Apache, MariaDB e PHP con le estensioni tipiche richieste da PrestaShop.

sudo apt install -y apache2 mariadb-server libapache2-mod-php php php-cli php-common php-mysql php-xml php-curl php-gd php-intl php-mbstring php-zip php-bcmath php-soap php-opcache unzip curl

Controlla che Apache risponda e che PHP sia caricato correttamente.

systemctl status apache2 --no-pager
php -v

Opzione Nginx con PHP-FPM

Se preferisci Nginx, installa il web server, MariaDB e PHP-FPM. Evita di mischiare moduli Apache e FPM senza motivo: il setup diventa più difficile da diagnosticare.

sudo apt install -y nginx mariadb-server php-fpm php-cli php-common php-mysql php-xml php-curl php-gd php-intl php-mbstring php-zip php-bcmath php-soap php-opcache unzip curl

Verifica il socket FPM attivo e la presenza del servizio.

systemctl status php7.4-fpm --no-pager
systemctl status nginx --no-pager

Il nome del servizio PHP può cambiare in base alla versione installata. Se il comando fallisce, elenca i servizi disponibili con `systemctl list-units --type=service | grep php`.

3. Mettere in sicurezza MariaDB e creare il database

PrestaShop non deve usare l’account root del database. Crea un database dedicato e un utente con privilegi limitati al solo schema applicativo.

sudo mysql_secure_installation

Durante la procedura imposta una password amministrativa robusta, rimuovi gli utenti anonimi, disabilita il login remoto di root e cancella il database di test se presente. È una misura minima, non un optional.

Ora crea database e utente applicativo. Sostituisci la password con un valore forte e conservala in un gestore sicuro, non nel file di appunti.

sudo mysql -u root -p
CREATE DATABASE prestashop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ps_user'@'localhost' IDENTIFIED BY 'PASSWORD_FORTE_QUI';
GRANT ALL PRIVILEGES ON prestashop.* TO 'ps_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Verifica che l’utente riesca davvero a connettersi.

mysql -u ps_user -p -h localhost prestashop -e 'SHOW TABLES;'

Se il comando fallisce, il problema è quasi sempre una password errata, un host non coerente o un GRANT non applicato come pensavi.

4. Scaricare PrestaShop e posizionarlo nel document root

Scarica l’archivio ufficiale della release che vuoi installare. Per un ambiente reale, conviene usare una versione stabile e supportata, non la prima build che trovi in rete.

cd /tmp
curl -L -o prestashop.zip https://download.prestashop.com/download/releases/prestashop_8.x.x.zip

Estrai i file nella directory del sito. Qui uso `/var/www/prestashop`, ma puoi adattare il path al tuo layout standard.

sudo mkdir -p /var/www/prestashop
sudo unzip prestashop.zip -d /var/www/prestashop

Se l’archivio contiene un file `prestashop.zip` annidato, estrailo una seconda volta: alcune distribuzioni del pacchetto usano questo schema. Il contenuto finale deve essere quello leggibile dal web server, non una cartella compressa lasciata lì per errore.

Imposta ownership e permessi in modo coerente. Il web server deve poter scrivere solo dove serve, non ovunque.

sudo chown -R www-data:www-data /var/www/prestashop
sudo find /var/www/prestashop -type d -exec chmod 755 {} \;
sudo find /var/www/prestashop -type f -exec chmod 644 {} \;

Durante l’installazione PrestaShop dovrà scrivere in alcune directory specifiche; dopo il setup conviene restringere ancora i permessi, ma farlo troppo presto complica l’installer.

5. Configurare il virtual host

La configurazione del virtual host deve puntare al document root corretto e, nel caso di PrestaShop, serve attenzione al supporto di rewrite e alle intestazioni HTTPS se metti un proxy davanti.

Apache

Abilita rewrite e crea un virtual host essenziale.

sudo a2enmod rewrite
sudo nano /etc/apache2/sites-available/prestashop.conf
<VirtualHost *:80>
    ServerName shop.example.com
    DocumentRoot /var/www/prestashop

    <Directory /var/www/prestashop>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/prestashop_error.log
    CustomLog ${APACHE_LOG_DIR}/prestashop_access.log combined
</VirtualHost>

Attiva il sito e ricarica Apache.

sudo a2ensite prestashop.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

Nginx

Con Nginx, il punto critico è il passaggio corretto delle richieste PHP a FPM e la gestione del front controller di PrestaShop.

sudo nano /etc/nginx/sites-available/prestashop
server {
    listen 80;
    server_name shop.example.com;
    root /var/www/prestashop;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }

    location ~* \.(jpg|jpeg|png|gif|css|js|ico|svg)$ {
        expires max;
        log_not_found off;
    }
}

Abilita il sito e testa la sintassi.

sudo ln -s /etc/nginx/sites-available/prestashop /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Se il socket PHP-FPM non corrisponde, sostituisci `php7.4-fpm.sock` con quello reale. È un errore banale, ma è anche uno dei più frequenti quando si copia una configurazione senza controllare la versione installata.

6. Completare l’installazione da browser

A questo punto apri il dominio nel browser e avvia il wizard di PrestaShop. L’installer controlla requisiti PHP, scrivibilità e connessione al database. Se qualcosa non torna, fermati prima di cliccare avanti a caso.

Durante il wizard inserisci i dati del database creato prima, scegli un prefisso tabelle non banale e definisci le credenziali dell’amministratore del negozio. Usa una password forte e un indirizzo email reale, perché servirà per il recupero accessi e per alcune notifiche applicative.

Se l’installer segnala mancanza di estensioni PHP, non ignorarlo: torna sul server e installa il modulo mancante. Le estensioni che più spesso mancano sono `intl`, `zip`, `gd`, `soap` e `mbstring`.

php -m | egrep 'intl|zip|gd|soap|mbstring|curl|xml|mysqli|pdo_mysql'

Se un modulo non compare, installalo e riavvia il servizio PHP o il web server. Non basta copiare il file di configurazione: il modulo deve essere effettivamente caricato dal runtime.

7. Pulizia post-installazione e hardening minimo

Dopo il completamento del wizard, elimina la directory `install` come richiesto da PrestaShop e verifica che il pannello admin sia raggiungibile solo dal percorso previsto. Lasciare i file di installazione in giro è un errore operativo evitabile.

sudo rm -rf /var/www/prestashop/install

Controlla anche la directory `admin` rinominata: PrestaShop di solito genera un nome univoco per il back office. Se il rename non è stato completato, il pannello non sarà protetto come dovrebbe.

Se usi Apache o Nginx dietro TLS, attiva certificati validi con Let’s Encrypt o con il tuo CA interno. Il traffico amministrativo non dovrebbe mai viaggiare in chiaro, nemmeno in un ambiente “di test” che poi diventa produzione senza che nessuno se ne accorga.

sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d shop.example.com

Con Nginx il flusso è analogo, ma il plugin cambia. Dopo il rilascio del certificato, verifica che HTTP reindirizzi a HTTPS e che non restino risorse miste in pagina.

8. Verifiche tecniche dopo il primo avvio

Una volta online, non limitarti a controllare la home page. Verifica il comportamento del backend, il caricamento delle immagini, il login amministrativo e la generazione di una pagina prodotto. Sono i punti che più spesso fanno emergere problemi di permessi, rewrite o cache.

curl -I https://shop.example.com
curl -s https://shop.example.com | head

Se ottieni `200 OK` ma il sito mostra errori visivi, passa ai log del web server e di PHP. Su Apache guarda `error.log`; su Nginx controlla sia il log di accesso sia quello degli errori; per PHP-FPM verifica il journal del servizio. Il punto non è trovare subito la soluzione: è capire quale layer sta fallendo.

sudo tail -n 100 /var/log/apache2/prestashop_error.log
sudo tail -n 100 /var/log/nginx/error.log
sudo journalctl -u php7.4-fpm -n 100 --no-pager

Se la pagina risponde lentamente già sul primo accesso, controlla i limiti di memoria di PHP e la disponibilità della CPU. PrestaShop non ama ambienti troppo stretti: con risorse ridotte può installarsi, ma poi degradare subito in fase di uso reale.

9. Errori tipici e come leggerli senza perdere tempo

La pagina bianca quasi mai è “un problema di PrestaShop” in senso generico. Di solito è un fatal error PHP, un’estensione mancante, un limite di memoria o un file non leggibile dal web server. Il primo passo è sempre il log, non il riavvio impulsivo del servizio.

Se il login al database fallisce durante l’installer, controlla le credenziali e la reachability locale del socket o della porta. Se le immagini non si caricano, di solito c’è un problema di permessi o di rewrite. Se il pannello admin non apre alcune pagine, il sospetto va su cache, `.htaccess` o configurazione Nginx incompleta.

Un dettaglio che vale la pena ricordare: in ambiente pulito, PrestaShop funziona meglio quando il server non è saturo e quando il database non condivide risorse con altri servizi rumorosi. Se stai mettendo in piedi un e-commerce serio, non trattarlo come un sito vetrina da poche query al giorno.

10. Quando passare da installazione base a setup da produzione

Una volta che il negozio è online, il lavoro vero inizia: backup del database e dei file, rotazione dei log, aggiornamenti controllati, monitoraggio di CPU, RAM e spazio disco. L’installazione è solo il primo passo; la parte importante è mantenere il sistema coerente nel tempo.

Se vuoi un salto di qualità, separa web server e database su host diversi, abilita backup automatici con retention sensata, e tieni sotto controllo le versioni PHP supportate dalla tua release di PrestaShop. È molto più semplice pianificare questi punti subito che rimediare quando il sito è già in produzione e l’upgrade diventa urgente.

In sintesi operativa: prepara lo stack, crea un database dedicato, installa PrestaShop nel document root corretto, configura il virtual host, completa il wizard, rimuovi i residui di installazione e verifica tutto con log e curl. È una sequenza semplice, ma solo se ogni passaggio viene controllato davvero.