Come copiare in locale il proprio sito online di Drupal

Pubblicato da Nicola Rainiero il 24-05-2021

In generale è sempre il contrario, perché si desidera portare online il proprio sito Web dopo averlo creato e modificato a piacimento in un ambiente privato. Ma questo succedeva nel 2017 e dopo non ho più avuto bisogno di tenermelo sul computer. Recentemente però ho scoperto che il supporto del mio sito Drupal 8 terminerà il 2 novembre 2021 e ho molte incompatibilità con la nuova versione 9x. Questo articolo nasce per descrivere il processo che ho seguito per fare la copia del mio sito e farlo girare di nuovo sul computer.

Come copiare in locale il proprio sito online di Drupal

Gli articoli trovati in rete mi avevano persuaso che questo aggiornamento sarebbe stato indolore e una pura formalità, anche perché Altervista, l'hosting dove tengo il mio sito,  è pienamente compatibile con i requisiti minimi per farlo funzionare (Versione PHP 7.3.25 e MySQL 8.0.21). Quindi ho provato subito ma ho ricevuto questo incoraggiante messaggio:

Lista di incompatibilità trovate nel passaggio a Drupal 9
Lista di incompatibilità trovate nel passaggio a Drupal 9

Per carità nulla di impossibile a partire dai due primi errori trovati e con i moduli che si possono eventualmente disinstallare se proprio non si trovano delle path o delle versioni alternative. Il problema principale resta però il mio tema pesantemente personalizzato. Inoltre risulta vecchio e poco adattabile agli smartphone o tablet, quello che in gergo viene definito responsivo. Insomma necessita di un nuovo layout e di un aspetto più moderno. Ma non posso scrivere e testare un nuovo tema direttamente sul mio sito web, devo prima metterlo sul mio computer locale e poi cominciare con calma a cambiarlo. Ed eccoci qua: una nuova guida per portare il proprio sito dal web al locale. Ho semplicemente riorganizzato e pulito alcune note, dopo averle nuovamente testate.

Installare LAMP stack (Apache, PHP, MySQL)

“LAMP” stack è un gruppo di software open source generalmente installato insieme per consentire a un server di ospitare siti Web dinamici e app Web. Questo termine è in realtà un acronimo che rappresenta il sistema operativo Linux, con il web server Apache. I dati del sito vengono archiviati in un database MySQL e il contenuto dinamico viene elaborato da PHP.1

Ho seguito una guida in italiano2 per installare il tutto su Xubuntu 20.04, ma ovviamente se ne possono trovare in rete per ogni sistema operativo esistente. Sotto riporto una lista di tutti i passaggi seguiti a riga di comando con alcuni commenti. Chiaramente YOURSITENAME o YOURPASSWORD si devono sostituire con il nome del sito e la password.

# Installare Apache2:
~$ sudo apt install apache2
# Abilitare il firewall per Apache:
~$ sudo ufw allow in "Apache Full"
# Far ripartire Apache:
~$ sudo service apache2 restart

# Installare PHP:
~$ sudo apt install php php-cli libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
# Abilitare modrewrite:
~$ sudo a2enmod rewrite

# Creare una cartella dove posizionare il sito:
~$ sudo mkdir -p /var/www/YOURSITENAME/
# Editare la configurazione per esso:
~$ sudo mousepad /etc/apache2/sites-available/YOURSITENAME.conf
# E copiarne il contenuto all'interno:
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName YOURSITENAME.local
    ServerAlias www.YOURSITENAME.local
    DocumentRoot /var/www/YOURSITENAME
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
       <Directory /var/www/YOURSITENAME>
                AllowOverride All
                Order allow,deny
                Allow from all
                # Without this lines mod_rewrite is not work for me
                RewriteEngine on
                RewriteBase /
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
                # This is from mod_rewrite manual at this site
       </Directory>
</VirtualHost>

# Abilitare YOURSITENAME:
~$ sudo a2ensite rainnic.conf
~$ sudo service apache2 restart
~$ sudo apache2ctl configtest
# Rimuovere l'errore: 'AH00558: apache2: Could not reliably determine the server's fully qualified domain [...]'
~$ sudo mousepad /etc/hosts
# Inserendo questo codice all'interno:
127.0.0.1    localhost
127.0.0.2    YOURSITENAME.local

# Installare MySQL:
~$ sudo apt install mysql-server
~$ mysql
# Abilitare l'autenticazione con password:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YOURPASSWORD';
# Accedere a mysql:
~$ mysql -u root -p

# Installare PhpMyAdmin:
~$ sudo apt install phpmyadmin php-mbstring
~$ sudo phpenmod mbstring
# Aggiungere un nuovo utente:
mysql> CREATE USER [email protected] IDENTIFIED BY 'YOURSITENAME';
# Abilitare tutti i permessi:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOURSITENAME'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
# Vedere se tutto funziona dal proprio browser:
http://YOURSITENAME
http://YOURSITENAME.local/phpmyadmin
PhpMyAdmin login
Schermata presa da: http://YOURSITENAME.local/phpmyadmin

Copiare il sito remoto usando un programma FTP

Ora si deve accedere alla cartella del proprio sito remoto per copiarla nel proprio computer. Suggerisco di mettere prima il proprio sito in modalità manutenzione e poi di usare un client FTP come FileZilla che è libero e multi piattaforma. In genere basta copiare la cartella radice remota e ricordarsi di spostarla all'interno di: /var/www/YOURSITENAME. E poi:

~$ cd /var/www/YOURSITENAME/sites/default
# Edit the settings.php file:
~$ sudo mousepad settings.php
# With:
[...]
$settings['update_free_access'] = TRUE;
[...]
$settings['trusted_host_patterns'] = [
    '^YOURSITENAME\.local$',
    '^www\.YOURSITENAME\.local$',
];
[...]
~$ sudo chown -R $USER:$USER /var/www/YOURSITENAME
~$ sudo chmod -R 755 /var/www/YOURSITENAME

Importare il database

In Altervista il database si chiama così my_YOUSITENAME, per cui dopo essere entrati nella varsione online del proprio phpMyAdmin, basta serguire questi tre passaggi:

L'immagine mostra come esportare un database da PhpMyAdmin
L'immagine mostra come esportare un database da PhpMyAdmin

Ricordarsi dove si salva il database perché da quelle posizione lo si dovrà importare da mysql.

Copiare il database nel tuo sito locale

Dalla stessa cartella dove si è salvato il fila localhost.sql:

mysql> CREATE DATABASE my_YOURSITENAME;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES,LOCK TABLES ON my_YOURSITENAME.* TO [email protected];
mysql> FLUSH PRIVILEGES;
# Importazione:
mysql> USE my_YOURSITENAME;
mysql> source localhost.sql;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES,LOCK TABLES ON my_YOURSITENAME.* TO [email protected];
mysql> FLUSH PRIVILEGES;
mysql> exit;

Ultimo passaggio: update.php

Basta collegarsi a http://YOURSITENAME/update.php e seguire i passaggi a video.

update.php controlla che tutto sia in ordine
update.php controlla che tutto sia in ordine

 



Potrebbero interessarti anche:

Nicola Rainiero

Ingegnere civile specializzato in geotecnica con l'ambizione di facilitare la propria attività lavorativa usando e creando software libero per un sapere condiviso e collettivo. Mi occupo anche di energie rinnovabili ed in particolare di geotermia a bassa entalpia. Sono da sempre appassionato di web design e modellazione 3D.