Sauvegarder simplement mes sites web
Soit le schéma suivant :
Un serveur web nommé "Apache_serveur", et un serveur de sauvegarde nommé "Sauv_serveur".
Configuration :
Apache_serveur :
serveur web --> apache
serveur de base de donnée --> mysql
serveur ftp --> pure-ftpd
Sauv_serveur :
Une distribution quelconque.
Nous supposons notre serveur web et notre serveur de base de donnée fonctionnels, et nous commencerons par installer pure-ftpd qui permettra aux utilisateurs de mettre à disposition leurs pages sur ledit serveur.
Installation et configuration d'un serveur ftp :
En fonction de la distribution linux utilisée, l'installation pourra se dérouler de plusieurs façons dont notamment via un paquet .rpm que nous trouverons à cette adresse :
http://sourceforge.net/project/showfiles.php?group_id=18317
Une fois le paquet téléchargé, placez-vous grâce à un terminal dans le répertoire de ce dernier.
L'installation du serveur se résume alors à cette commande :
rpm -Uvh pure-ftpd-*
Cette commande est à exécuter en mode super-utilisateur, et le caractère "*" correspond à la version du paquet que vous avez téléchargé, ex : pure-ftpd-1.0.21.rpm.
Si vous disposez d'une distribution de type Debian, l'exécution dans un terminal en mode super utilisateur de la ligne suivante devrait suffire à installer votre serveur ftp.
apt-get install pure-ftpd
La configuration de pure-ftpd peut être très fine, mais nous ne nous y attarderons pas.
Cependant les commandes suivantes peuvent nous permettre d'obtenir le résultat escompté :
groupadd ftpgroup
useradd -g ftpgroup -G serv_group -d /dev/null -s /etc ftpuser
rm /etc/pure-ftpd/auth/*
ln -s /etc/pure-ftpd/conf/PureDB/etc/pure-ftpd/auth/75puredb
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
echo "yes" > /etc/pure-ftpd/conf/CreateHome Dir
echo "21" > /etc/pure-ftpd/conf/Bind
Les utilisateurs qui seront autorisés à accèder à notre ftp seront des utilisateurs n'ayant pas de réels droits sur notre système, ils seront gérés par Pure-ftpd et seront déclinés
à partir d'un seul compte utilisateur que nous avons ici nommé ftpuser.
Lors de la création de l'utilisateur en question (useradd) vous devez indiquer comme groupe secondaire (option -G) le groupe de votre serveur web. afin que celui-ci dispose des droits suffisants
pour afficher les pages web se trouvant dans les répertoires ftp. Remplacez donc "serv_group" par le groupe adéquat.
Maintenant que notre serveur ftp est installé et configuré, nous allons créer des comptes d'accès au répertoires à attribuer aux utilisateurs.
mkdir /usr/local/ftpusers/user1
pure-pw useradd webmaster -u ftpuser -d /usr/local/ftpusers/user1
pure-pw mkdb
Renouvelez la manoeuvre pour chaque accès utilisateur à créer en remplaçant simplement "user1" par le nom de votre utilisateur.
Mise en place et automatisation des sauvegardes :
Nous nous connectons maintenant au serveur de sauvegarde sur lequel nous souhaitons sauvegarder nos répertoires ftp et nos bases de données.
Sauv_serveur
useradd -m user1
passwd user1
useradd -m database
passwd database
Nous avons ci-dessus créé l'utilisateur "user1" ainsi que son répertoire personnel "/home/user1" grâce à l'option -m; idem pour l'utilisateur database.
L'automatisation de nos sauvegarde va se réaliser simplement grâce à l'utilisation des commandes "crontab -e" et "rsync".
Sur notre serveur web nous allons grâce à crontab définir une tâche planifiée.
Apache_serveur
crontab -e
45 1 *** rsync -a /usr/local/ftpusers/user1 user1:mot_de_passe@192.168.0.200:/home/user1
La commande "crontab -e" nous permet de définir en une ligne l'exécution planifiée d'une commande.
La définition des lignes est la suivante : le premier champs "45" indique les minutes, le deuxième champs "1" indique les heures, le troisième le jour du mois(jusqu' à 31),
le quatième le mois (jusqu'a 12), le cinquième le jour de la semaine (de 0 pour dimanche à 6). Vient ensuite la commande à exécuter et ses arguments.
Les champs matérialisé par des étoiles prennent toutes les valeurs possibles.
Ici la commande rsync va synchroniser le répertoire "/usr/local/ftpusers/user1" présent localement vers le répertoire distant "/home/user1" que nous venons de créé sur
le serveur de sauvegarde localisé dans l'exemple à l'adresse 192.168.0.200 (à remplacer par l'adresse correcte dans votre commande). Le champs "mot_de_passe" doit ici
être remplacé par le mot de passe que vous avez définit sur le serveur de sauvegarde pour l'utilisateur user1.
Dans notre exemple, la sauvegarde s'effectuera tous les matin à 1h45.
L'astuce en ce qui concerne la sauvegarde de la base de donnée réside dans la création d'un script qui utilisera la commande "mysqldump" afin d'exporter la base dans un fichier ".sql" qui sera exporté vers le serveur de sauvegarde en utilisant crontab, comme vu précédemment.
mysqldump --all-databases > ~/monfichier_backup.sql
rsync ~/monfichier_backup database:mot_de_passe@192.168.0.200:/home/database/