Trasferimento server per sito realizzato con Drupal

,

Drupal è un Content Management Framework scritto in php che si appoggia su db sql.

Contenuto e stile sono distintamente divisi tra record sul database e file di cui è composto il framework.

Per effettuare il trasferimento del database non è necessario fare nulla se non esportare un file sql.

E’ però necessario fare una modifica ad un record per evitare che il processo di importazione si interrompa quando giunge in una determinata tabella.

Qual è il problema:

Il problema riguarda la tabella users

In sostanza, in fase di importazione il primo record inserito una volta creata una tabella è quello che ha uid = 0, ossia quello che per Drupal è l’utente anonimo, ma il primo valore accettato di default dalla tabella importata e appena creata è 1, quindi il record aggiorna automaticamente la chiave da 0 ad 1.

Quando si passa all’inserimento del record successivo però il processo incontra un campo uid dal valore 1, che è il primo utente creato dopo l’installazione, ed è il super amministratore del sistema.

Un record con uid = 1 però esiste già, quindi il processo si interrompe riportando l’errore “duplicate entry for primary key”.

Per ovviare a questo problema è necessaria preventivamente cambiare nella tabella users di origine il valore  di uid = 0 in un numero diverso da zero, e non esistente, per assurdo diciamo 999 (difficile avere creato 999 utenti) evitando così lo shift della chiave primaria.

Una volta effettuato l’import (come vedremo proseguendo) dovremo cambiare, sia nella tabella importata sia in quella di origine l’uid cambiato di nuovo a 0

E’ possibile effettuare l’esportazione tramite l’interfaccia di phpmyadmin:

Dal menu orizzontale alto selezionare “Esporta”

screen001

Dalla pagina che raggiungiamo scegliamo il formato che ci interessa, nel nostro caso SQL

Nel caso il database fosse molto corposo possiamo decidere di comprimerlo in un file .zip o in un file .tar.gz

screen003

Ciò che otterremo sarà un file con tutte le query necessarie per riprodurre da qualche altra parte il database del nostro sito in drupal.

Conserviamo con cura una copia del file, e apriamo l’interfaccia phpmyadmin del nuovo server

Analogamente al comando esporta utilizzaremo la funzione “Importa”

screen004

E andremo a caricare il file .sql ( o compresso) che abbiamo salvato in precedenza.

Il processo può essere più o meno lungo a seconda delle dimensioni del nostro database.

A processo completato avremo una perfetta copia del nostro database, che abbiamo utilizzato fino a quel momento, ma sul database nuovo.

L’ultima modifica da fare è quella di aggiornare la tabella users modificando il valore della chiave primaria 999 al valore originario 0.

Ora la nostra copia è perfetta.

Da file vecchi a database nuovo

Il passaggio successivo consiste nel  far puntare al sito che vogliamo trasferire il nuovo database sul nuovo server modificando il file settings.php

Il vantaggio di questa operazione sta nell’aggiornare il database che sarà definitivo sia nel tempo in cui materialmente trasferiremo i file via ftp da un server ad un altro, sia nel tempo in cui i dns si propagheranno per la rete, dopo averli cambiati.

Il file da modificare è quindi il file settings.php dentro la cartella sites/default dell’installazione di drupal

La riga che ci interessa è la 92, se non abbiamo mai modificato il file in precedenza.

$db_url = ‘mysql://nomeutente:password@ipserverdatabase/nomedeldatabase‘;

Dobbiamo cambiare il valore di ipserverdatabase scrivendo l’ip del server su cui abbiamo trasferito il database.

Dovesse essere necessario cambiamo anche nomeutente e password, sarebbe buona pratica mantenere lo stesso nome utente, e la stessa password tra i due server, in modo da non dover modificare nessun parametro se non quello dell’ip del database.

Modifichiamo e carichiamo il file. Dopo averlo caricato modifichiamo i suoi permessi in 0644.

A questo punto testiamo il sito inserendo un contenuto e verificando che la tabella node si aggiorni sul nuovo server.

Trasferimento dei file

Il passaggio successivo consiste nel trasferire materialmente tutti i file da un server all’altro via FTP.

Il processo può essere lungo specialmente per i contenuti multimediali che Drupal da solo può avere creato (tipo tutte le immagini di imagecache, se utilizzato).

Il penultimo passaggio consiste nell’assegnazione dei giusti permessi alle cartelle per il corretto funzionamento dei file.

Cambio dei permessi

Tutte le cartelle caricate, di default, non sono accessibili in scrittura.

Ci dobbiamo segnare il percorso di sistema e la directory temporanea che usiamo per gestire i file controllando la pagina “file system” nel backoffice del sito, all’url

admin/settings/file-system

Impostiamo quei percorsi con i permessi 0777 tramite filezilla.

NB la distribuzione dei permessi non influisce sul funzionamento del sito stesso ma solo sulla protezione da scritture/letture esterne e sulla creazione automatica delle immagini.

Se i file e il db sono collegati correttamente i dati dal database vengono estratti indipendentemente dai permessi.

Modifica dei dns

A questo punto non ci rimane che aggiornare i record dns per il dominio, attendere la propagazione e verificare il corretto funzionamento dei file trasferiti, o in alternativa aggiornare il nostro file host con ip e nome di dominio nuovi per verificare localmente che tutto funzioni a dovere.

0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Sentitevi liberi di contribuire!

Lascia un commento