Ricerca nel sito web

Come sincronizzare due server Web/siti Web Apache utilizzando Rsync


Ci sono così tanti tutorial disponibili sul web per eseguire il mirroring o eseguire il backup dei tuoi file web con metodi diversi, qui sto creando questo articolo per mio riferimento futuro e qui utilizzerò un comando molto semplice e versatile di Linux per creare un backup del tuo sito web. Questo tutorial ti aiuterà a sincronizzare i dati tra i tuoi due server web con "Rsync".

Lo scopo di creare un mirror del tuo server web con Rsync è che se il tuo server web principale fallisce, il tuo server di backup può subentrare per ridurre i tempi di inattività del tuo sito web. Questo modo di creare un backup del server web è molto buono ed efficace per le imprese web di piccole e medie dimensioni.

Vantaggi della sincronizzazione dei server Web

I principali vantaggi della creazione di un backup del server Web con rsync sono i seguenti:

  1. Rsync sincronizza solo i byte e i blocchi di dati che sono cambiati.
  2. Rsync ha la capacità di controllare ed eliminare quei file e directory sul server di backup che sono stati eliminati dal server web principale.
  3. Si occupa di autorizzazioni, proprietà e attributi speciali durante la copia dei dati in remoto.
  4. Supporta anche il protocollo SSH per trasferire i dati in modo crittografato in modo da avere la certezza che tutti i dati siano al sicuro.
  5. Rsync utilizza il metodo di compressione e decompressione durante il trasferimento dei dati che consuma meno larghezza di banda.

Come sincronizzare due server Web Apache

Procediamo con la configurazione di rsync per creare un mirror del tuo server web. Qui utilizzerò due server.

Server principale
  1. Indirizzo IP: 192.168.0.100
  2. Nome host: webserver.esempio.com
Server di backup
  1. Indirizzo IP: 192.168.0.101
  2. Nome host: backup.example.com

Passaggio 1: installa lo strumento Rsync

In questo caso i dati del server web di webserver.example.com verranno rispecchiati su backup.example.com. E per farlo prima, dobbiamo installare Rsync su entrambi i server con l'aiuto del seguente comando.

[root@tecmint]# yum install rsync        [On Red Hat based systems]
[root@tecmint]# apt-get install rsync    [On Debian based systems]

Passaggio 2: crea un utente per eseguire Rsync

Possiamo impostare rsync con l'utente root, ma per motivi di sicurezza, puoi creare un utente non privilegiato sul server web principale, ad esempio webserver.example.com per eseguire rsync.

[root@tecmint]# useradd tecmint
[root@tecmint]# passwd tecmint

Qui ho creato un utente "tecmint" e assegnato una password all'utente.

Passaggio 3: testare la configurazione di Rsync

È ora di testare la configurazione di rsync sul tuo server di backup (ad esempio backup.example.com) e per farlo, digita il seguente comando.

[root@backup www]# rsync -avzhe ssh [email :/var/www/ /var/www
Uscita del campione
[email 's password:

receiving incremental file list
sent 128 bytes  received 32.67K bytes  5.96K bytes/sec
total size is 12.78M  speedup is 389.70

Puoi vedere che il tuo rsync ora funziona perfettamente e sincronizza i dati. Ho utilizzato "/var/www" per trasferire; puoi modificare la posizione della cartella in base alle tue esigenze.

Passaggio 4: automatizza la sincronizzazione con l'accesso senza password SSH

Ora abbiamo finito con le impostazioni di rsync e ora è il momento di impostare un cron per rsync. Poiché utilizzeremo rsync con il protocollo SSH, ssh richiederà l'autenticazione e se non forniremo una password a cron non funzionerà. Per far funzionare cron senza problemi, dobbiamo impostare accessi SSH senza password per rsync.

Qui in questo esempio, lo sto facendo come root per preservare anche le proprietà dei file, puoi farlo anche per utenti alternativi.

Innanzitutto, genereremo una chiave pubblica e privata con i seguenti comandi sul server di backup (ad esempio backup.example.com).

[root@backup]# ssh-keygen -t rsa -b 2048

Quando inserisci questo comando, non fornire la passphrase e fai clic su Invio per Passphrase vuota in modo che rsync cron non abbia bisogno di alcuna password per sincronizzare i dati.

Uscita del campione
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
9a:33:a9:5d:f4:e1:41:26:57:d0:9a:68:5b:37:9c:23 [email 
The key's randomart image is:
+--[ RSA 2048]----+
|          .o.    |
|           ..    |
|        ..++ .   |
|        o=E *    |
|       .Sooo o   |
|       =.o o     |
|      * . o      |
|     o +         |
|    . .          |
+-----------------+

Ora, la nostra chiave Pubblica e Privata è stata generata e dovremo condividerla con il server principale in modo che il server web principale riconosca questa macchina di backup e gli consenta di accedere senza chiedere alcuna password durante la sincronizzazione dei dati.

[root@backup html]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email 

Ora prova ad accedere alla macchina con "ssh '[email '" e controlla .ssh/authorized_keys.

[root@backup html]# [email 

Ora abbiamo finito con la condivisione delle chiavi. Per saperne di più sull'accesso senza password SSH, puoi leggere il nostro articolo a riguardo.

  1. Accedi senza password SSH in 5 semplici passaggi

Passaggio 5: pianifica Cron per automatizzare la sincronizzazione

Impostiamo un cron per questo. Per impostare un cron, apri il file crontab con il seguente comando.

[root@backup ~]# crontab –e

Si aprirà il file /etc/crontab da modificare con il tuo editor predefinito. Qui in questo esempio, sto scrivendo un cron per eseguirlo ogni 5 minuti per sincronizzare i dati.

*/5        *        *        *        *   rsync -avzhe ssh [email :/var/www/ /var/www/

I comandi cron e rsync di cui sopra sincronizzano semplicemente "/var/www/" dal server web principale a un server di backup in ogni 5 minuti. È possibile modificare la configurazione dell'ora e della posizione della cartella in base alle proprie esigenze. Per essere più creativo e personalizzare con i comandi Rsync e Cron, puoi consultare i nostri articoli più dettagliati all'indirizzo:

  1. 10 comandi Rsync per sincronizzare file/cartelle in Linux
  2. 11 Esempi di pianificazione Cron in Linux