Skip to main content

Trasferire il backup di un sito Joomla!® da remoto a locale con MAMP

Pubblicato il: 06 febbraio 2025

Come trasferire un sito Joomla!® da un server remoto ad una installazione locale con MAMP o MAMP PRO.
Partiremo da un backup di sito e database per arrivare ad una copia locale navigabile del nostro sito remoto.

Le procedure di trasferimento variano se in locale utilizziamo MAMP o MAMP PRO ma nel corso del tutorial prenderemo in esame entrambe.
Se avete bisogno di aiuto per l'installazione di MAMP sul Mac, leggete il tutorial: Installare Joomla!® 5 con MAMP su Mac

Un consiglio, se prevedete di utilizzare regolarmente installazioni locali di Joomla!® per progettare nuovi siti web o per far girare copie di siti remoti, valutate l'acquisto della licenza di MAMP PRO, per me ne vale la pena. Vi riporto il link della tabella comparativa: https://www.mamp.info/en/comparison-matrix/

Quando conviene installare una copia locale di un sito remoto?

Trasferire un sito web Joomla!® da un server remoto ad una installazione locale è molto utile, in particolare in questi casi:

  • provare nuovi componenti, moduli, plugin, ecc. prima di installarli sul sito remoto;
  • installare in locale gli aggiornamenti più delicati (es. major release e upgrade del core) per verificarne la compatibilità;
  • testare differenti versioni di php per evitare malfunzionamenti con il core di Joomla!® o con estensioni di terze parti;
  • valutare in anteprima nuovi layout di pagina prima di renderli pubblici.

Per questo tutorial abbiamo usato Mac OS Sequoia, Joomla!® v. 5.2.3 e MAMP PRO v. 7.2 con php 8.2.

I file di partenza e le versioni di php

Avremo bisogno di una copia di backup completa del sito remoto (ospitato su server Apache) e del database.
Se sono compresse (.zip, .gz o altro) scompattatele, partiamo mettendo sulla scrivania la cartella principale del sito (la root) e il file .sql del database.

Per evitare problemi dovuti a funzionalità nuove, rimosse o deprecate, meglio impostare in MAMP o in MAMP PRO almeno la stessa major release di php che viene utilizzata nel server remoto (ad es. php 7.x o php 8.x), ancora meglio se utilizzate anche la stessa minor release (ad es. 7.4.x o 8.2.x).

Decidiamo sin d'ora i nomi da assegnare alla cartella del sito e al database locali che non devono necessariamente essere uguali a quelli a remoto.
Di solito assegno alla cartella locale il nome del dominio senza l'estensione e al database un nome che ricordi il dominio preceduto dal prefisso db_
In questo tutorial ho assegnato alla cartella locale del sito remoto il nome: miosito e ho chiamato il suo database: db_miosito
Voi sostituiteli con i nomi che si rifanno al vostro dominio.

Creazione del database ed importazione dei dati

Il database locale

Come prima cosa dobbiamo creare in locale il database db_miosito ed importarvi le tabelle del database remoto.

1. apriamo il file .sql del database remoto con un editor di codice come ad esempio BBEdit e controlliamo:

  • che nelle prime righe, al comando CREATE TABLE sia specificato come Storage engine Innodb (ENGINE=InnoDB);
  • quale Collation (COLLATE=) viene utilizzata; di solito utf8mb4_unicode_ci o utf8mb4_general_ci, ci servirà al punto 4.

2. avviamo MAMP o MAMP PRO facendo clic su Start

3. entriamo nel pannello di phpMyAdmin:
clic su WebStart --> Tools --> phpMyAdmin oppure il link diretto: http://localhost:8888/phpMyAdmin5/

4. dal Tab Database - inseriamo nella prima casella db_miosito e nella seconda la collation corretta

5. clic su Crea per creare il database (vuoto per ora)

6. dal Tab Importa - Sfoglia... --> selezioniamo dalla scrivania il file .sql del database remoto

7. clic in basso sul bottone Importa

8. se tutto è andato bene comparirà il messaggio in foto "Importazione eseguita con successo".

Se al contrario ti dovesse comparire il messaggio: "Stai probabilmente cercando di caricare sul server un file troppo grande" significa che il database remoto ha un peso che eccede i limiti impostati nel phpMyAdmin di MAMP.

Un aiuto per risolvere il problema potresti trovarlo in questo Tutorial:
Importare database di grandi dimensioni in MAMP o XAMPP con il Terminale del Mac

creare un database in MAMP phpMyAdmin
importare tabelle con phpMyAdmin
Importazione eseguita con successo

Modifiche preliminari

La cartella di root

Aprite dal backup la cartella di root, quella principale del sito dove ci sono i file e le cartelle di Joomla!® e rinominatela con il nome che avete deciso di darle in locale, qui useremo: miosito.

Controllate la presenza di file e cartelle invisibili (quelli/e col "." davanti).
Per farlo, premete contemporaneamente Shift command . (tasto maiuscole + command + punto), se ce ne sono appariranno ombreggiate.

È probabile che ci siano file e cartelle non strettamente legati al funzionamento del sito Joomla!®, ma ad impostazioni del server remoto.
Meglio eliminarli per non interferire con il funzionamento del server locale.

Nell'esempio vediamo una cartella .well-known (è quella di Let's Encrypt) e due file: .user.ini e .ftpquota che potete tranquillamente eliminare.
Il .htaccess va lasciato, è l'htaccess.txt che avete rinominato (o almeno spero...😅) quando avete installato Joomla!®.

la cartella root di Joomla!®

Il file .htaccess di Joomla!®

In locale non è indispensabile mantenerlo attivato (.htaccess, col punto davanti al nome) ma in considerazione del fatto che il nostro intento è quello di far girare in locale una copia il più possibile "conforme" al sito remoto, faremo il possibile per poterlo utilizzare anche con MAMP e MAMP PRO.

Per evitare sorprese meglio aprire anche il file .htaccess (sempre con BBEdit o altri editor di codice) per verificare se all'interno sono presenti direttive aggiuntive oltre a quelle dell'htaccess nativo di Joomla!® e nel caso, valutare se lasciarle o cancellarle.

Andranno eliminati se presenti i reindirizzamenti da non-www a www o da http a https. A volte l'hosting provider inserisce nelle ultime righe delle direttive per gestire le versioni di php (es. AddHandler application/x-httpd-php...), anche queste vanno eliminate.
Io preferisco cancellare anche eventuali Redirect 301 (quelli che di solito si inseriscono per reindirizzare vecchie URL).
Se avete dubbi, confrontatelo aprendo un htaccess.txt preso dal pacchetto originale di installazione di Joomla!®.
Nota: probabilmente nella root oltre al .htaccess troverete anche un htaccess.txt. Quest'ultimo è inattivo, non consideratelo, si riposiziona in seguito agli aggiornamenti di Joomla!®; se volete potete anche eliminarlo.

Attenzione: terminate le operazioni ripetiamo la combinazione "Shift + command + ." per nascondere i file invisibili e ripristinare la vista di default del Mac.

Il file .htaccess in MAMP PRO

Sia con la versione attuale (7.2) che con le precedenti di MAMP PRO, non ho mai avuto problemi dovuti alla presenza nella root del file .htaccess.
Per questo non dovrebbero esserci problemi a mantenere il file htaccess attivato (con il punto davanti al nome) anche nell'installazione locale.

Il file .htaccess in MAMP

Con MAMP è possibile che lasciando l'htaccess attivato (.htaccess) una volta aperto il sito in locale il browser ci dia un messaggio di "Internal Server Error".
Se questo avviene seguite i passaggi descritti al paragrafo: "MAMP: htaccess e Internal Server Error" per risolvere il problema.

Il file configuration.php

In questo file ci sono i collegamenti con il database (nome DB, utente e password), i percorsi alle cartelle logs e tmp ed altri settaggi del sito.
Per trasferire in locale il nostro sito dovremo operare delle modifiche al valore di alcune variabili di questo file.
Nota: i dati sotto riportati si rifanno all'utente root di MAMP, ma se preferite potete anche impostare un nuovo utente con relativi privilegi e password.

Apriamo il file configuration.php con un editor di codice. Le variabili che andranno verificate e/o modificate sono:

  • $host

    localizza il database, il valore corretto in locale è:
    public $host = 'localhost';

  • $user

    è il nome utente del database, il valore in locale è:
    public $user = 'root';

  • $password

    è la password dell'utente del database, il valore in locale è:
    public $password = 'root';

  • $db

    è il nome del database locale (voi mettete il vostro):
    public $db = 'db_miosito';

  • $log_path

    è il percorso alla directory logs, se usate MAMP inserite:
    public $log_path = '/Applications/MAMP/htdocs/miosito/administrator/logs';
    se usate MAMP PRO inserite:
    public $log_path = '/Users/ACCOUNT/Sites/localhost/miosito/administrator/logs';
    ACCOUNT è il nome della vostra cartella inizio sul Mac (il nome utente), miosito il nome della cartella locale.

  • $tmp_path

    è il percorso alla directory tmp, se usate MAMP inserite:
    public $tmp_path = '/Applications/MAMP/htdocs/miosito/tmp';
    se usate MAMP PRO inserite:
    public $tmp_path = '/Users/ACCOUNT/Sites/localhost/miosito/tmp';
    ACCOUNT è il nome della vostra cartella inizio sul Mac (il nome utente), miosito il nome della cartella locale.

  • $force_ssl

    è un settaggio che riguarda la forzatura al protocollo https, in locale il valore corretto è:
    public $force_ssl = 0;

esempio di configuration.php in locale

configuration.php locale

Nota: diamo per scontato che le porte e i percorsi alle cartelle locali di MAMP e MAMP PRO siano quelle di default dell'applicazione.

Spostiamo la cartella "miosito" nel server MAMP

Ora che abbiamo creato e popolato il database locale e che abbiamo sistemato i file e le cartelle non ci resta che posizionare la cartella principale del sito al suo posto nel server locale di MAMP o MAMP PRO.

con MAMP spostiamo la cartella "miosito" in:

.../Applications/MAMP/htdocs/miosito

con MAMP PRO spostiamo la cartella "miosito" in:

.../Sites/localhost/miosito

Se tutto è andato a buon fine, digitando nella barra delle URL: http://localhost:8888/miosito/ dovreste vedere il vostro sito in locale.

Attenzione: una cosa che faccio sempre appena trasferisco in locale la copia di un sito remoto è quella di cambiare le credenziali di accesso.
Mantenendole uguali potrebbe succedere di entrare a remoto pensando di essere in locale, con le ovvie spiacevoli conseguenze.

MAMP: htaccess e Internal Server Error

Come già anticipato, la presenza del file .htaccess nella cartella htdocs di MAMP potrebbe generare un errore di tipo: "Internal Server Error" o "Not Found".
Posso suggerirvi due soluzioni:

  1. se non ci interessa mantenere la riscrittura delle URL anche in locale, eliminare l'htaccess e modificare due valori nel configuration.php;
  2. modificare la configurazione di Apache di MAMP per fare in modo che il file .htaccess venga riconosciuto.

Per mantenere la massima compatibilità dei link e delle URL nella navigazione in locale, a mio parere la seconda soluzione è quella da preferire.

Soluzione 1 - eliminare il .htaccess dalla root

  1. entriamo nella cartella di root (miosito) posizionata in .../Applications/MAMP/htdocs/, facciamo apparire nuovamente i file invisibili con la combinazione "shift + command + .", selezioniamo il file .htaccess e spostiamolo nel cestino.
    Di nuovo "shift + command + ." per nasconderli e ripristinare la vista di default.
  2. apriamo con un editor di codice il file configuration.php e impostiamo i seguenti valori alle variabili indicate:
  • $sef_rewrite

    è la funzione "Riscrivi URL SEF" del Global configuration SEO che avendo eliminato l'htaccess ora settiamo a No:
    public $sef_rewrite = 'false';

  • $sef_suffix

    è la funzione "Suffisso URL" del Global configuration SEO che in locale non e più necessaria:
    public $sef_suffix = 'false';

Soluzione 2 - modificare il file httpd.conf di Apache (per mantenere il .htaccess)

Nota: istruzioni e foto si riferiscono alla mia attuale versione di MAMP, la 7.2. Con versioni diverse potrebbero esserci differenze.

1. fermiamo il server MAMP cliccando su Stop dal pannellino di controllo di MAMP

2. con un editor di codice apriamo il file httpd.conf in: /Applications/MAMP/conf/apache/httpd.conf

3. cerchiamo la riga con #LoadModule rewrite_module modules/mod_rewrite.so e togliamo il "#" per attivarla

apache rewrite module Off
mod_rewrite disattivato
apache rewrite module On
mod_rewrite attivato

4. cercate le istruzioni in foto e modificate il valore di AllowOverride da None a All

Apache Allow Override None
.htaccess non consentito
Apache Allow Override All
.htaccess consentito

5. salvate il file

6. fate ripartire il server MAMP cliccando Start sul pannellino di controllo e provate a riaprire il sito.

Approfondimenti: i file e le cartelle invisibili

Il file .htaccess di Joomla!®

Il file .htaccess (Hypertext Access) è un file di testo che consente di modificare alcune impostazioni di configurazione a livello di directory senza dover accedere direttamente alla configurazione principale di Apache.
In Joomla!® viene attivato manualmente (da noi) rinominando il file htaccess.txt presente nel pacchetto di installazione in .htaccess
La sua attivazione è molto importante non solo in termini di sicurezza ma anche di operatività in quanto migliora le prestazioni, consente i reindirizzamenti e la riscrittura delle URL.

La directory .well-known

È una directory standard utilizzata in ambito web per ospitare file di configurazione, metadati e altre risorse in modo che possano essere accessibili in modo uniforme da client e server. Uno degli usi più comuni è la validazione automatica dei certificati SSL da Let's Encrypt, un'autorità di certificazione gratuita che fornisce certificati SSL/TLS per la cifratura delle comunicazioni web e che spesso è resa disponibile dagli hosting provider nel nostro pacchetto di hosting.

Il file .user.ini

È un file di configurazione usato nei server che usano php. Permette di configurare parametri php a livello di directory senza necessariamente accedere al file php.ini il cui accesso è limitato agli amministratori del server. È un po' come fare un "override" del php.ini.
Parametri come ad esempio upload_max_filesize, max_execution_time o post_max_size possono così essere personalizzati direttamente da noi dal pannello di controllo del nostro hosting provider.

Il file .ftpquota

Il file .ftpquota viene utilizzato per gestire o limitare lo spazio dato come disponibile all'utente FTP sul server. Non è un file che l'utente finale modifica direttamente, ma è gestito dal sistema di amministrazione del server.