Supporto volontario e collaborativo per Joomla!® in italiano

Guide Joomla! 3

Impara ad utilizzare Joomla come un professionista

Trasferire sito da locale a remoto e viceversa

Premessa

L'operazione di trasferimento di un sito web Joomla dal proprio pc (host client) al webserver remoto (host server) e/o viceversa può essere necessaria per due motivi fondamentali:

  1. si sviluppa il sito sul proprio pc e, alla fine, lo si vuole pubblicare sul web
  2. si è sviluppato il sito su un host server e lo si vuole replicare in locale, ad esempio, per effettuare sperimentazioni di estensioni senza danneggiare il sito in produzione
  3. si vuole trasferire un sito da un hosting provider ad un altro.

Anche se può sembrare comodo sviluppare un sito web in locale consiglio sempre di effettuare tutte le operazioni sempre sull'host server remoto e utilizzare la vostro pc per conservare copia del sito e del database di quello in remoto.

Concetti fondamentali

Caratteristiche di un servizio hosting per Joomla:

Joomla 3

  1. server linux
  2. web server Apache 2.0 o superiore
  3. interprete php ver. 5.3.10 o superiore
  4. database MySQL versione 5.1

per approfondimenti visitate la pagine sul sito ufficiale

Sulla configurazione di php ricordiamo che dovrebbe essere la seguente:

  • Safe mode: off
  • Registrer globals: off
  • Magic quotes: on

Inoltre devono essere presenti:

  • Emulazione RG: on
  • supporto zlib
  • supporto xml
  • modulo Apache Mod_rewrite

Hosting Provider

Società che fornisce lo spazio su cui risiede il nostro sito web. Il servizio di hosting per joomla deve prevedere almeno:

  • web server Linux
  • 1 database MySQL
  • interprete PHP ver. 5
  • accesso via protocollo ftp
  • accesso al database con phpMyAdmin o altra web application simile

Sito web

E' un insieme di pagine collegate fra loro usando la tecnica dell'ipertesto. Queste pagine sono accessibili utilizzando un programma detto Browser concepito proprio per leggere questa tipologia di documenti.

Host

Ogni computer collegato alla rete internet è definito con questo termine. Gli host (ospiti) si definiscono così perchè ospitano programmi applicativi sia di tipo client (es. browser, posta elettronica, ftp client) che di tipo server (es. web server, ftp server). I programmi applicativi di tipo server offrono servizi alla rete mentre i programmi applicativi di tipo client accedono ai servizi offerti dai server per utilizzarli.

Host-host.gif

Sito web in locale

E' possibile creare dei siti web in Joomla sul proprio pc e farli funzionare esattamente come se fossero pubblicati sul web. Per fare questo è necessario avere installato sul proprio pc un webserver Apache, il DBMS MySQL e l'interprete PHP.

Sito web remoto

E' un sito web presente su un server remoto (posizionato in un punto qualsiasi del globo terrestre) e raggiungibile da tutti per essere consultato. I server sono come i nostri personal computer solo um pò più potenti nelle capacità di calcolo e nelle risorse. Quindi il vostro sito web e i file che lo compongono sarà memorizzato in alcune cartelle su un disco di una macchina che si trova chissà dove. L'unico problema dunque è poter raggiungere queste cartelle per copiarci quelle che abbiamo creato sul nostro pc.

Ambiente di sviluppo per Joomla

Riferendomi ad un personal computer con Sistema Operativo Windows XP per sviluppare un sito con Joomla abbiamo bisogno di tre cose:

  1. un server web Apache ver 2 o superiore
  2. un Database MySQL ver 5
  3. un interprete PHP ver. 5 o superiore
  4. un buon editor di testo

Se poi vogliamo pubblicare il sito su un web server remoto avremo bisogno di un programma che ci consenta di trasferire i file dal nostro pc al server remoto e viceversa. Un programma simile è anche detto client ftp.

Ecco un elenco con una breve descrizione di ciò che ci serve:

Xampp o EasyPhp

Sono le due applicazioni che più spesso vengono citate per realizzare un ambiente di sviluppo web per i siti in Joomla su pc con Windows XP. Ambedue le applicazioni installano sul pc un webserver Apache, il DBMS MySQL, l'interprete PHP e il gestore di database phpMyAdmin più altre applicazioni accessorie non fondamentali. Non ci sono pro e contro nell'usare un'applicazione piuttosto che un'altra. Piccoli vantaggi possono essere quelli di poter localizzare i vostri siti web locali in una cartella diversa da C:\EasyPhp\www utilizzando la funzionalità di creazione di Alias presente in EasyPhp.

Easyphp01.png

Con Xampp si ha a disposizione un pannello dal quale avviare o fermare i singoli componenti e un'interfaccia web per amministrare la sicurezza.

Xampp02.png Xampp01.png

Se si usa Xampp le cartelle contenenti i siti web andranno create nella cartella C:\Xampp\htdocs mentre se si usa EasyPhp andranno create nella cartella C:\EasyPhp\www Si noti che il percorso C:\Xampp o C:\EasyPhp è arbitrario e cambierà in funzione di dove avete installato le applicazioni.

In definitiva i due programmi si equivalgono.

Si possono scaricare da: Xampp EasyPhp

Filezilla

E' un'applicazione chiamata anche client ftp. Il protocollo FTP (File Trasfert Protocol) permette di trasferire file da un host all'altro molto velocemente. E' possibile accedere alle cartelle e ai file che compongono il proprio sito web utilizzando questo programma e trasferire i file dal proprio pc all'host remoto.

Filezilla.png

Per trasferire i file dal sito in locale a quello remoto è sufficiente utilizzare la tecnica del Drag and Drop (clicca, trascina e lascia) selezionando i file e le cartelle da trasferire nella finestra che visualizza i file in locale e, cliccandoci sopra, trascinarli nella finestra che visualizza i file in remoto. Così facendo i file verranno inseriti nella coda dei file in trasferimento indicata nell'immagine. Avremo così il controllo visivo sul trasferimento dei file e in particolare su quei file che, per vari motivi, non dovessero essere trasferiti (Trasferimenti non completati). Questi file non trasferiti possono essere eventualmente rimessi in coda per il trasferimento.

Lo si può scaricare da http://filezilla-project.org/download.php (versione client)

phpMyAdmin

E' una applicazione in modalità pagine web per gestire uno o più database MySQL Se si usano Xampp o EasyPhp viene istallata insieme alle altre applicazioni e la si può eseguire utilizzando il browser web digitando l'indirizzo http://localhost/phpmyadmin (verificare l'esatto indirizzo in funzione di quale programma è stato installato)

Phpmyadmin01.png


Con phpmyadmin è possibile gestire uno o più database MySQL sul proprio pc. In particolare è possibile importare o esportare l'intero contenuto di un database. Descriviamo brevemente le due operazioni:

Esportare un database

  1. selezionare il database da esportare. Verrà visualizzato l'elenco delle cartelle del database
  2. cliccare sul pulsante Esporta (in alto)
  3. selezionare le opzioni:
    1. accertarsi che nel box Esporta siano selezionate tutte le tabelle e che sia selezionata l'opzione SQL
    2. seleziona DROP TABLE nel box Struttura;
    3. Inserimenti completi ed estesi nel box Dati;
    4. verificare, nel box Dati, che la modalità della query sia INSERT
    5. Selezionare Salva con nome...
  4. Premere il pulsante Esegui

Phpmyadmin03.jpg

Qui puoi trovare una guida al backup del database con Phpmyadmin 3.4.5

Verrà trasferito sul vostro pc un file con il nome del database e l'estensione .sql. Questo file contiene le istruzioni necessarie a ricreare l'intero database dati compresi.


Nota sulla opzione DROP TABLE per l'esportazione.

 Il file che viene generato dall'operazione di esportazione è un file contenente delle istruzioni in linguaggio SQL che verranno
 poi eseguite durante la procedura di importazione in una altro database. Questi file tecnicamente si chiamano Script SQL. 
 Queste istruzioni sono di due tipi: il primo provvede a creare la singola tabella e il secondo a inserirvi i dati. 

Ecco un esempio del file di esportazione generato per la sola tabella jos_banners

-- phpMyAdmin SQL Dump
-- version 3.0.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generato il: 13 feb, 2009 at 12:37 PM
-- Versione MySQL: 5.0.41
-- Versione PHP: 5.2.2
 
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
 
--
-- Database: `sito_test`
--
-- --------------------------------------------------------
--
-- Struttura della tabella `jos_banner`
--
 
DROP TABLE IF EXISTS `jos_banner`;
CREATE TABLE  `jos_banner` (
	  `bid` 		INT(11) NOT NULL AUTO_INCREMENT,
	  `cid` 		INT(11) NOT NULL DEFAULT '0',
	  `type` 		VARCHAR(10) COLLATE latin1_general_ci NOT NULL DEFAULT 'banner',
	  `name` 		VARCHAR(50) COLLATE latin1_general_ci NOT NULL DEFAULT '',
	  `imptotal` 	INT(11) NOT NULL DEFAULT '0',
	  `impmade` 	INT(11) NOT NULL DEFAULT '0',
	  `clicks` 		INT(11) NOT NULL DEFAULT '0',
	  `imageurl` 	VARCHAR(100) COLLATE latin1_general_ci NOT NULL DEFAULT '',
	  `clickurl` 	VARCHAR(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
	  `date` 		datetime DEFAULT NULL,
	  `showBanner` 	tinyint(1) NOT NULL DEFAULT '0',
	  `checked_out` tinyint(1) NOT NULL DEFAULT '0',
	  `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
	  `editor` 		VARCHAR(50) COLLATE latin1_general_ci DEFAULT NULL,
	  `custombannercode` text COLLATE latin1_general_ci,
	  PRIMARY KEY  (`bid`),
	  KEY `viewbanner` (`showBanner`)
	) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;
--
-- Dump dei dati per la tabella `jos_banner`
--
 
INSERT INTO `jos_banner` 
VALUES
(1, 1, '', 'Joomla.it', 0, 57, 0, 'joomla_it.jpg', 'http://www.joomla.it', '2007-09-13 14:02:16', 0, 0, '0000-00-00 00:00:00', '', '');
 
INSERT INTO `jos_banner` 
VALUES
(2, 1, '', 'Joomla.it_2', 0, 1363, 178, 'banner_joomla.gif', 'http://www.joomla.it', '2007-09-13 14:06:11', 1, 0, '0000-00-00 00:00:00', NULL, '');

Quando questo script verrà eseguito l'istruzione CREATE TABLE servirà a creare la tabella jos_banner mentre le istruzioni INSERT INTO consentiranno di inserire i dati nella tabella jos_banner appena creata.

Ecco quindi che, avendo creato un database vuoto, eseguendo questo script con la funzione di Importazione di phpMyAdmin possiamo ricreare tutte le tabelle contenute nel database di cui abbiamo fatto l'export.

E se il database di destinazione non è vuoto? Abbiamo fatto, fino ad ora, l'ipotesi che il database in cui vogliamo fare l'importazione sia appena creato e guindi vuoto. Ma nel caso in cui il database di destinazione contenga già delle tabelle dobbiamo prevederlo già in fase di esportazione del database di origine. Selezionando l'opzione Aggiungi DROP T ABLE non facciamo altro che aggiungere, nello script di esportazione, l'istruzione DROP TABLE IF EXIST prima della creazione di ogni tabella (CREATE TABLE). Quindi quando andremo ad importare i dati nel database di destinazione ogni tabella presente nel database verrà prima eliminata (DROP TABLE) se esiste (IF EXISTS) e poi creata (CREATE TABLE). In questo modo saremo sicuri che le tabelle del database di destinazione saranno ricreate con la struttura e i dati del database di origine.

Importare un database

Se si è eseguita l'operazione di esportazione di un database remoto è possibile utilizzare lo script ricavato per ricreare lo stesso database in locale. Aprite il browser web e accedete a phpMyAdmin. Se il database esiste potete cliccare sul suo nome nella colonna di sinistra. Se il database non esiste potete crearlo dalla home page di phpMyAdmin. Una volta selezionato il database cliccate sul pulsante Importa. Quindi cliccate sul pulsante Sfoglia per selezionare il file contente l'esportazione del database remoto. Quindi cliccate su Esegui.

Phpmyadmin04.png

Editor Notepad++

E' un editor di testo che consiglio caldamente. Lo stesso che ho usato per scrivere questa guida. Pur essendo un semplice editor di testo ha diverse utili funzionalità. Una di queste è quella di colorare il testo in funzione del linguaggio di programmazione usato riconosendolo automaticamente.

Lo si può scaricare all'indirizzo http://notepad-plus.sourceforge.net/it/site.htm

Trasferimento da remoto a locale

Supponiamo di aver realizzato il nostro sito web direttamente sul web server remoto e di volerne fare una replica in locale sul nostro pc. Dopo aver installato l'ambiente di sviluppo web necessario per ospitare un sito Joomla procediamo come segue:

Trasferimento file

  1. creare sul proprio pc una cartella destinata a ricevere i file del sito (all'interno della cartella htdocs se si usa xampp o della cartella www se si usa Esayphp)
  2. connettersi con un programma ftp client (Filezilla) alle cartelle del sito remoto
  3. selezionare tutte le cartelle e i file del sito e copiarle in una cartella sul proprio pc
  4. verificare che tutti i file presenti nella coda di trasferimento di Filezilla siano stati copiati

Trasferimento Database

  1. accedere al database remoto utilizzando l'applicazione web messa a disposizione dall'hoster (in genere si tratta sempre di phpMyAdmin)
  2. effettuare l'esportazione di tutte le tabelle e dei dati contenuti nel database remoto salvando sul proprio pc il file di export con estensione .sql (vedi paragrafo precedente su phpMyAdmin)
  3. utilizzando phpMyAdmin in locale creare un database (il nome può essere scelto a piacere, consiglio di nominarlo con lo stesso nome della cartella che ospita il sito in locale)
  4. accedere al database creato in locale ed eseguire l'operazione di importazione del file di export del database remoto (vedi paragrafo precedente su phpMyAdmin)

Modifica del file configuration.php

/* Database Settings */
var $dbtype   = 'mysql'; 			\\ rimane invariato
var $host     = 'localhost';			\\ è il nome che rappresenta il nostro pc su cui gira MySQL
var $user     = 'utente_db';			\\ utente con cui si accede al database in locale. Di solito è root
var $password = 'password_utente_db';		\\ password dell utente che accede al database in locale
var $db       = 'nome_db';			\\ nome del database in locale
var $dbprefix = 'jos_';				\\ prefisso al nome delle tabelle (leggi nota successiva)

se si usa xampp installato in C:\xampp

var $log_path = 'C:\\xampp\\htdocs\\cartella_sito\\logs';
var $tmp_path = 'C:\\xampp\\htdocs\\cartella_sito\\tmp';

Se si usa easyphp installato in c:\easyphp

var $log_path = 'C:\\easyphp 3.0\\www\\cartella_sito\\logs';
var $tmp_path = 'C:\\easyphp 3.0\\www\\cartella_sito\\tmp';

NOTA

 L'uso del prefisso per le tabelle jos_ è puramente indicativo. Ogni installazione di Joomla, a partire dalla versione 1.6, 
 genera un prefisso diverso per le tabelle ma consente anche di modificare autonomamente tale prefisso.


A questo punto aprendo il browser e digitando l'indirizzo http://localhost/nome_cartella_sito dovremmo veder comparire la home page del nostro sito web.

Se al termine di queste operazioni il sito in locale non dovesse essere visualizzato correttamente verificate che:

  1. il database in locale contenga effettivamente le stesse tabelle di quello in remoto
  2. i paramentri del file configuration.php sul server locale siano corretti

Trasferimento da locale a remoto

Supponiamo di aver sviluppato il nostro sito Joomla sul nostro pc e, una volta completato il lavoro, vogliamo pubblicarlo sul webserver in remoto.

Si procederà come segue:

Trasferimento file

  1. utilizzando Filezilla trasferire tutti i file del sito dal nostro pc alla cartella principale del web server remoto. Il nome della cartella in remoto può variare a seconda del server ma il servizio di hosting dovrebbe avercela indicata quando ci ha comunicato i dati essenziali per accedere al nostro spazio web
  2. accertarsi che tutti i file del sito vengano trasferiti regolarmente

Trasferimento Database

  1. accedere al database in locale utilizzando phpMyAdmin
  2. effettuare l'esportazione di tutte le tabelle e dei dati contenuti nel database usato per il sito web locale salvando sul proprio pc il file di export con estensione .sql (vedi paragrafo precedente su phpMyAdmin)
  3. utilizzando phpMyAdmin in remoto (in genere è sempre phpMyAdmin)
  4. effettuare l'import del file con estensione .sql generato dal nostro pc

NOTA

 alcuni hosting provider forniscono uno o più database MySql già creati mentre altri demandano l'operazione di creazione del database
 all'utente. Verificare preventivamente la disponiblità o meno di un database sul server remoto.

Modifica del file configuration.php

Tutti i dati sotto riportati vengono forniti dall'hosting provider al momento della sottoscrizione del contratto di servizio

/* Database Settings */
var $dbtype   = 'mysql'; 			\\ rimane invariato
var $host     = 'ip/url del server remoto';	\\ è il nome del server che in remoto ospita il database
var $user     = 'utente_db';			\\ utente con cui si accede al database in remoto
var $password = 'password_utente_db';		\\ password dell utente che accede al database in remoto
var $db       = 'nome_db';			\\ nome del database in remoto
var $dbprefix = 'jos_';				\\ prefisso al nome delle tabelle (leggi nota successiva)
 
var $log_path = '/home/user/domains/miosito.it/public_html/logs';
var $tmp_path = '/home/user/domains/miosito.it/public_html/tmp';

NOTA

 L'uso del prefisso per le tabelle jos_ è puramente indicativo. Ogni installazione di Joomla, a partire dalla versione 1.6, 
 genera un prefisso diverso per le tabelle ma consente anche di modificare autonomamente tale prefisso.

Percorsi assoluti

I parametri di configurazione $log_path e $tmp_path contengono il percorso assoluto alle cartelle logs e tmp del nostro sito Joomla. Alcuni hosting provider forniscono questa informazione nella stessa mail con cui ci forniscono i dati di accesso al nostro spazio web ma se così non fosse dobbiamo ricavarceli da soli. Per ottenere il path assoluto alle cartelle del nostro sito web procediamo come segue:

  1. creare un file di testo denominato testpath.php contenente il seguente codice:
<?php
     echo $_SERVER['DOCUMENT_ROOT'];
?>
  1. trasferite il file testpath.php nella cartella principale del sito sul web server remoto
  2. aprite il browser e digitate nella barra degli indirizzi: http://www.miosito.it/testpath.php. Vi verrà visualizzato il path assoluto al vostro sito che andrete a sostituire a quello da me indicato con /home/user/domains/miosito.it/public_html.

Se al termine di queste operazioni il sito in remoto non dovesse essere visualizzato correttamente verificate che:

  1. il database in remoto contenga effettivamente le stesse tabelle di quello in locale
  2. i parametri del file configuration.php sul server remoto siano corretti (soprattutto quelli che permettono a Joomla di accedere al database)

Trasferimento da remoto a remoto

A volte capita di dover trasferire un sito web da un servizio di hosting ad un altro. In questo caso il nostro pc ci servirà solo per conservare temporaneamente i file del sito e il file con estensione .sql contente la struttura e i dati del database del sito.

Host to host.png

Avremo quindi:

  1. un server remoto sorgente che contiene le cartelle del sito
  2. un server remoto di database che contiene il database del sito sorgente che vogliamo trasferire
  3. un server remoto di destinazione dove vogliamo trasferire il sito
  4. un server remoto di database che conterrà lo stesso database del sito sorgente.

Definiamo "sito di origine" il sito che si trova sulla spazio web attualmente in uso mentre "sito di destinazione" sarà il sito sul nuovo server web (che si suppone vuoto)

Procedere come segue:

Trasferimento dall'host sorgente al proprio pc

  1. create sul vostro pc una cartella che ospiterà, temporneamente, il vostro sito
  2. trasferite con Filezilla tutti i file dal sito di origine, avendo l'accortezza di verificare che tutti i file vengano trasferiti regolarmente, in questa cartella
  3. accedete al database del sito di origine ed effettuiamo l'esportazione di tutte le tabelle del database, il file prodotto con estensione .sql verrà salvato sul vostro pc

Trasferimento dal proprio pc all'host di destinazione

  1. usando Filezilla connettetevi al sito di destinazione e trasferite tutti i file dalla cartella del vostro pc creata in precedenza. Verificate sempre che il trasferimento avvenga con successo.
  2. connettetevi al database del sito di destinazione e importate il file con estensione .sql prodotto in precedenza e che contiene la struttura e i dati del database del sito di origine

Modifica del file configuration.php

Anche in questo caso il file di configurazione di Joomla va modificato con i paramentri del server web che ospita il sito a destinazione. Per questo fate riferimento al paragrafo "modifica del file configuration.php" del capitolo precedente "Trasferimento da locale a remoto".


--Bigham 15:04, 21 mag 2012 (CEST)



CommentaCommenta questa guida sul forum