Comment sauvegarder un site WordPress sur des espaces

introduction

DigitalOcean Spaces peut fournir une solution de stockage d’objets pour les données de site WordPress. Ces données sont souvent diverses, y compris les ressources multimédias et les fichiers de base de données, ce qui en fait un bon candidat pour le stockage d'objets. Les solutions telles que Spaces pouvant stocker de grandes quantités de données non structurées, elles peuvent accueillir les actifs statiques de votre site. Le stockage séparé des actifs statiques peut optimiser les performances du site en libérant de l'espace et des ressources sur vos serveurs. Si votre site contient des ressources dynamiques (ressources avec des taux de requêtes élevés ou fichiers de base de données nécessitant des modifications fréquentes), vous pouvez envisager de jumeler une solution de stockage en mode bloc à votre espace DigitalOcean afin de stocker vos données de manière optimale. Pour en savoir plus sur le stockage d'objets et de blocs, consultez nostutorial on Object Storage vs. Block Storage Services.

Dans ce tutoriel, nous allons utiliser Spaces pour sauvegarder les données WordPress. Parce que DigitalOceanSpaces API est interopérable avec l'API AWS S3, nous pourrons utiliser des plugins compatibles S3 pour gérer nos sauvegardes, ainsi queS3cmd, un outil client pour travailler avec S3 et S3- magasins d'objets comptables. Nous allons examiner différentes méthodes pour créer des sauvegardes: utiliser un plugin WordPress, créer des sauvegardes manuelles avec S3cmd et automatiser des sauvegardes avec S3cmd et un script créé à cette fin.

Conditions préalables

Ce tutoriel suppose que vous avez une instance WordPress sur un serveur ainsi qu'un espace DigitalOcean. Sinon, vous pouvez configurer les éléments suivants:

Avec ces conditions préalables en place, nous pouvons commencer à sauvegarder un site WordPress dans Spaces.

Modification des autorisations WordPress

Tout au long de ce tutoriel, nous travaillerons avec le dossierwp-content/uploads de notre projet WordPress, il est donc important que ce dossier existe et dispose des autorisations appropriées. Vous pouvez le créer avec la commandemkdir, en utilisant l’indicateur-p pour créer le dossier s’il n’existe pas, et éviter de générer une erreur s’il existe:

sudo mkdir -p /var/www/html/wp-content/uploads

Vous pouvez maintenant définir des autorisations sur le dossier. Tout d'abord, définissez sa propriété sur votre utilisateur (nous utiliseronssammy ici, mais assurez-vous d'utiliser votre utilisateursudo non root), et la propriété du groupe sur le groupewww-data:

sudo chown -R sammy:www-data /var/www/html/wp-content/uploads

Ensuite, établissez les autorisations qui donneront au serveur Web un accès en écriture à ce dossier:

sudo chmod -R g+w /var/www/html/wp-content/uploads

Nous allons maintenant pouvoir utiliser des plugins pour créer des sauvegardes pour les actifs dans le dossierwp-content/uploads, et pour interagir avec nos actifs depuis l'interface WordPress.

Utiliser des plugins pour créer des sauvegardes

Il existe une variété de plugins compatibles S3 que vous pouvez utiliser pour sauvegarder votre site WordPress sur votre espace. Lors de l’évaluation des plug-ins, vous devez prendre en compte le fait que vous souhaitiez ou non sauvegarder vos fichiers de base de données, car certaines de ces ressources n’offrent pas cette possibilité. Un autre facteur à garder à l'esprit est de savoir si le plugin va tirer des ressources d'autres plugins. Si vous utilisez un gestionnaire de documents, par exemple, vous voudrez peut-être vous demander si votre plugin de sauvegarde capturera ou non les fichiers et les ressources créés par votre gestionnaire de documents dans le dossierwp-content/uploads.

Installer des plugins avec WP-CLI

Il est possible de travailler avecWP-CLI pour gérer vos plugins WordPress depuis la ligne de commande. Nous allons l'installer dans cette section et l'utiliser dans la prochaine pour montrer comment utiliser des plugins pour sauvegarder des données WordPress dans Spaces.

Pour installer WP-CLI, nous allons suivre les étapes suggérées par le projet. Exécutez la commande suivante pour télécharger le binaire dans votre dossiertmp:

cd /tmp
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Pour rendre ce fichier exécutable et utilisable à partir de la ligne de commande, tapez ce qui suit:

chmod +x /tmp/wp-cli.phar

Une fois que nous avons rendu le fichier exécutable, nous pouvons le renommer et le déplacer vers un emplacement dans nosPATH:

sudo mv /tmp/wp-cli.phar /usr/local/bin/wp

Si nous voulons vérifier que notre installation a réussi, nous pouvons exécuter les opérations suivantes:

wp --info

Cela nous donnera des informations générales sur la version que nous utilisons et son chemin.

Nous pouvons maintenant utiliser WP-CLI pour installer tous les plugins que nous souhaitons utiliser, et pourmanage other tasks liés à notre site WordPress.

Installation et configuration de la sauvegarde UpdraftPlus

Si vous souhaitez sauvegarder des fichiers de base de données avec d’autres ressources multimédias, vous pouvez utiliser un plug-in offrant une option de sauvegarde de la base de données. UpdraftPlus Backup propose une version gratuite et compatible S3 qui permet des sauvegardes de bases de données et de supports, ainsi que la planification des sauvegardes.

Pour installer UpdraftPlus, nous pouvons naviguer dans votre répertoire de plugins WordPress:

cd /var/www/html/wp-content/plugins

De là, nous pouvons installerupdraftplus en utilisant la commandewp:

wp plugin install updraftplus

Pour activer le plugin, nous pouvons exécuter:

wp plugin activate updraftplus

À partir de là, vous pouvez accéder à l'onglet Plugins situé à gauche de notre tableau de bord administratif WordPress:

WordPress Plugin Tab

En sélectionnantInstalled Plugins, nous arriverons à une page qui répertorie nos plugins installés. Nous devrions voirUpdraftPlus - Backup/Restore dans la liste des options disponibles:

UpdraftPlus Activated

Pour configurer les paramètres de vos sauvegardes, accédez à l'ongletSettings dans votre tableau de bord administratif et sélectionnezUpdraftPlus Backups dans la liste des options disponibles. Il y aura un écran d'atterrissage qui ressemble à ceci:

Updraft Menu

Nous verrons comment faire une sauvegarde de site de base avec ce plugin. Sous l'ongletSettings en haut de la page, vous trouverez un menu qui vous permet de planifier vos sauvegardes:

Schedule Menu

Si vous souhaitez tester que le plugin fonctionne, vous pouvez laisser cet ensemble àManual. Nous allons conserver ce paramètre pour le moment afin de vérifier que le plug-in fonctionne correctement.

Sous ce menu, vous verrez différentes options de stockage à distance. SélectionnezS3-Compatible (Generic):

S3-Compatible Option

Après avoir sélectionné cette option, un menu vous demandant d’avoir vos informations sur DigitalOcean Space:

S3 Settings

En fonction de l'URL de votre espace, vous pourrez déterminer son nom de compartiment et son noeud final. Par exemple, si l'URL de votre espace esthttps://example-name.nyc3.digitaloceanspaces.com, alorsexample-name sera votre compartiment etnyc3.digitaloceanspaces.com sera votre point de terminaison. LeS3 location sera le nom de votre bucket etS3 end-point sera votre point de terminaison.

Ci-dessous, vous trouverez des options pour les fichiers à inclure et à exclure dans votre sauvegarde:

Include Exclude File Options

Une fois que vous avez rempli ces paramètres pour refléter ce que vous souhaitez sauvegarder, vous pouvez revenir à l'ongletCurrent Status. Lorsque vous sélectionnezBackup Now parmi les boutons disponibles en haut de l'écran, le menu suivant s'affiche:

Database Menu

Ici, vous pouvez choisir de sauvegarder ou non votre base de données.

Une fois que vous avez sélectionné l'optionBackup Now au bas de ce menu, vos fichiers de sauvegarde doivent remplir votre compartiment. Vous pouvez accéder à votre page Spaces dans le panneau de configuration de DigitalOcean pour vérifier leur présence. Une fois que vous avez testé les fonctionnalités du plug-in, vous pouvez modifier les paramètres de planification de la sauvegarde en fonction de vos besoins.

Sauvegarder WordPress avec S3cmd

En tant qu'outil de ligne de commande pour la gestion des données dans des solutions de stockage d’objets, S3cmd offre une variété d’options pour la sauvegarde de vos données WordPress sur Spaces. Il peut être utilisé dans des commandes isolées et dans des scripts qui automatisent le processus de sauvegarde.

Si vous n'avez pas encore installés3cmd sur votre serveur, vous pouvez l'installer en suivantthe “Install S3cmd” section of this tutorial et le configurer avec vos informations Spaces en suivantthe “Configure S3cmd” section.

Vous devriez maintenant avoir installé et configurés3cmd avec vos informations Spaces. Vous pouvez vérifier la configuration des3cmd en tapant:

s3cmd --dump-config

Vous devriez voir une sortie comme celle-ci:

Output
[default]
access_key = Your_Spaces_Access_Key
access_token =
add_encoding_exts =
add_headers =
bucket_location = US
ca_certs_file =
cache_file =
check_ssl_certificate = True
check_ssl_hostname = True
cloudfront_host = cloudfront.amazonaws.com
default_mime_type = binary/octet-stream
delay_updates = False
delete_after = False
delete_after_fetch = False
delete_removed = False
dry_run = False
enable_multipart = True
encrypt = False

...

Une fois que nous avons inspecté nos informations de configuration des3cmd pour nous assurer qu'elles correspondent à nos informations d'identification Spaces, nous serons prêts à utilisers3cmd pour sauvegarder des fichiers dans notre espace. Nous le ferons d’abord manuellement, avant de créer un script qui automatisera ce travail.

Création de sauvegardes manuelles du dossierwp-content/uploads

Pour créer une sauvegarde de notre dossierwp-content/uploads, nous utiliserons une commande appelées3cmd sync. Cela nous permettra de ne transférer que les fichiers qui n'existent pas déjà dans notre espace. Bien que cela puisse ne pas être significatif pour un transfert ponctuel, il peut rapidement devenir important lorsque vous déplacez plus de données vers votre espace. Nous utiliseronssammys-bucket pour notre compartiment etsammys-backups pour désigner un dossier de sauvegarde sur notre espace, mais vous devez les remplacer par les noms de votre compartiment et du dossier de sauvegarde (le cas échéant). Pour nous assurer que nos fichiers vont à leur destination prévue, nous utiliserons l'option--dry-run avecs3cmd, comme suit:

s3cmd sync --dry-run /var/www/html/wp-content/uploads s3://sammys-bucket/sammys-backups/

Si la sortie de la commande indique que vos données atteindront leur destination prévue, vous pouvez continuer et exécuter la commande sans l'option--dry-run:

s3cmd sync /var/www/html/wp-content/uploads s3://sammys-bucket/sammys-backups/

Création de sauvegardes manuelles de la base de données MySQL

Nous pouvons maintenant créer une sauvegarde manuelle de notre base de données MySQL. Cela se passera en 4 parties. Premièrement, nous pouvons créer un dossier dans notre répertoire personnel pour contenir nos fichiers de base de données:

mkdir ~/mysqldmp

Ensuite, nous allons créer un fichier contenant nos informations de mot de passe et d’utilisateur de base de données. Cela nous aidera à éviter de transmettre ces informations à la ligne de commande lors de la création de nos fichiers de sauvegarde. Les options spécifiques à l'utilisateur pour MySQL sont généralement stockées dans~/.my.cnf, nous allons donc créer ce fichier dans notre répertoire personnel. Type:

nano ~/.my.cnf

Dans le fichier, nous spécifierons le nom d'utilisateur et le mot de passe de notre client MySQL:

~/.my.cnf

[client]
user=mysql_user
password=mysql_password

Enregistrez ce fichier en tapantCTRL+X suivi deY.

Pour limiter les autorisations de lecture et d'écriture à notre utilisateur, nous pouvons taper les éléments suivants:

chmod 600 .my.cnf

Nous pourrons maintenant exécuter la commandemysqldump pour faire une copie de nos fichiers de base de données sans transmettre les informations de mot de passe à la ligne de commande. Lorsque nous exécutonsmysqldump, il recherchera notre fichier.my.cnf dans le cadre de son processus de lecture des options par défaut. Pour compresser la sortie de notre base de données, nous pouvons également utilisergzip, comme suit:

mysqldump mysqldatabase_name | gzip > ~/mysqldmp/mysql_dump.sql.gz

Enfin, nous pouvons utilisers3cmd pour envoyer le fichier compressé dans notre espace:

s3cmd sync mysqldmp/mysql_dump.sql.gz s3://sammys-bucket/sammys-backups/

Vous devriez maintenant voir le fichier de base de données compressé dans votre espace.

Automatiser les sauvegardes WordPress avec Cron

L'automatisation de vos sauvegardes garantira que vos données WordPress restent accessibles et récupérables. Bien qu'il soit possible de créer des sauvegardes manuellement, il s'agit d'un processus chronophage qui peut être utilement automatisé avec le planificateur de travaux decron. Pour en savoir plus sur l'utilisation decron pour planifier des tâches, consultez notre tutoriel surHow To Schedule Routine Tasks With Cron and Anacron on a VPS.

Pour créer un fichier pour notre script de sauvegarde, nous pouvons utiliser la commande suivante:

nano ~/wp-sync.sh

Dans le fichier vide, nous écrirons d'abord ce qui suit pour indiquer que ce script sera exécuté par le shell Bash:

wp-sync.sh

#!/bin/bash

Ensuite, nous allons déclarer des variables qui spécifieront des informations sur les fichiers et les bases de données à sauvegarder. Nos variablesDATABASE etUPLOADS_DIR spécifieront des informations sur la base de données et le dossier que nous allons sauvegarder. Nous allons déclarer ces variables comme des tableaux, ce qui nous permettrait de spécifier plus d'une valeur:

wp-sync.sh

...
DATABASE=("mysqldatabase_name") # To add more than one database, separate values with spaces: ("database1" "database2")
UPLOADS_DIR=("/var/www/html/wp-content/uploads") # To add more than one directory, separate values with spaces: ("folder1" "folder2")

BACKUP_DIR=/home/sammy/mysqldmp

La variableDATABASE spécifie le nom de la ou des bases de données WordPress quemysqldump sauvegardera. UPLOADS_DIR pointe vers le ou les répertoires que nous sauvegardons. BACKUP_DIR indique au script oùmysqldump doit écrire le fichier de sauvegarde.

Ensuite, nous définirons nos informationss3cmd, y compris nos informations de compartiment Spaces. Ces informations refléteront les informations du compartiments3 de notre fichier de configurations3cmd. Lorsque nous spécifierons notre variableS3_CMD, nous inclurons un chemin vers le binaires3cmd pourcron. Nous inclurons également une variableDATE, qui nous permettra de créer des horodatages pour nos fichiers de sauvegarde:

wp-sync.sh

...

DATE=$(date +%y%m%d-%H_%M_%S)


S3_CMD="/usr/local/bin/s3cmd"
S3_BUCKET=s3://sammys-bucket/sammys-backups/$DATE/

Ici, nous avons rendu la variableDATE très granulaire, pour capturer l'année (%y), le mois (%m), le jour (%d), l'heure (%H), minute (%M) et seconde (%S) de notre sauvegarde. En fonction de la fréquence de votre planning de sauvegarde, vous pouvez le modifier de manière à pouvoir suivre efficacement vos sauvegardes. Notre variableS3_CMD pointera vers l'exécutables3cmd qui nous permettra d'exécuter nos commandes.

Ensuite, nous allons inclure un ensemble de commandes qui créeront notre répertoiremysqldmp, dans le cas où il n’existe pas déjà, et supprimerons tous les fichiers de ce répertoire au cours du processus de mise à jour:

wp-sync.sh

...

mkdir -p $BACKUP_DIR
rm -rf "${BACKUP_DIR:?}/*"

Enfin, nous allons créerfor loops pour exécuters3cmd sync pour nos fichiers de base de données. Nous utiliserons à nouveaumysqldump pour créer un fichier de base de données compressé, mais nous y ajouterons l'option--defaults-extra-file, qui indique àmysqldump de lire.my.cnf en plus de l'option standard des dossiers. Nous allons également parcourir notre tableau de base de données, en appliquant le même ensemble d’actions sur chaque base de données:

wp-sync.sh

...

for DB in "${DATABASE[@]}"
do
mysqldump --defaults-extra-file=/home/sammy/.my.cnf "$DB" | gzip > "$BACKUP_DIR/mysql_dump.sql.gz"
$S3_CMD sync "$BACKUP_DIR/mysql_dump.sql.gz" "$S3_BUCKET"
done

Les commandesmysqldump ets3cmd sync font le même travail que dans la section précédente. Cependant, comme nous avons ajouté l'horodatage de la variableDATE à notre compartiment, nos fichiers seront créés dans notre espace d'une manière qui nous permet de suivre facilement quand ils ont été créés.

Ensuite, nous allons créer une boucle pour notre répertoire. Encore une fois, nous allons parcourir le tableauUPLOADS_DIR pour exécuter les mêmes actions sur chaque répertoire:

wp-sync.sh

...

for DIR in "${UPLOADS_DIR[@]}"
do
$S3_CMD sync "$DIR" "$S3_BUCKET"
done

Encore une fois, la commandes3cmd sync est identique à la commande que nous avons utilisée pour effectuer une sauvegarde manuelle de ce répertoire. La différence réside dans l'horodatage qui est apposé sur ce matériau dans notre espace.

Le script complet ressemblera à ceci:

wp-sync.sh

#!/bin/bash

DATABASE=("mysqldatabase_name") # To add more than one database, separate values with spaces: ("database1" "database2")
UPLOADS_DIR=("/var/www/html/wp-content/uploads") # To add more than one directory, separate values with spaces: ("folder1" "folder2")

BACKUP_DIR=/home/sammy/mysqldmp

DATE=$(date +%y%m%d-%H_%M_%S)

S3_CMD="/usr/local/bin/s3cmd"
S3_BUCKET=s3://sammys-bucket/sammys-backups/$DATE/

mkdir -p $BACKUP_DIR
rm -rf "${BACKUP_DIR:?}/*"

for DB in "${DATABASE[@]}"
do
mysqldump --defaults-extra-file=/home/sammy/.my.cnf "$DB" | gzip > "$BACKUP_DIR/mysql_dump.sql.gz"
$S3_CMD sync "$BACKUP_DIR/mysql_dump.sql.gz" "$S3_BUCKET"
done

for DIR in "${UPLOADS_DIR[@]}"
do
$S3_CMD sync "$DIR" "$S3_BUCKET"
done

Nous pouvons maintenant rendre notre scriptwp-sync.sh exécutable:

chmod +x ~/wp-sync.sh

Pour le tester, nous pouvons exécuter:

sudo ~/wp-sync.sh

Accédez à votre espace et assurez-vous que vos fichiers ont été copiés comme prévu. Une fois que vous avez vérifié cela, vous pouvez éditer le fichiercrontab pour exécuter le script à un intervalle souhaité.

Ouvrez par le fichiercrontab en tapant:

crontab -e

Si vous modifiez ce fichier pour la première fois, il vous sera demandé de choisir un éditeur:

crontab

no crontab for root - using an empty one
Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny
Choose 1-4 [2]:
...

Vous pouvez sélectionner2 pour nano, ou saisir le numéro correspondant à l'éditeur de votre choix.

Au bas du fichier, nous allons ajouter une ligne pour spécifier la fréquence d'exécution de notre script. Pour tester la fonctionnalité de notre script, nous pouvons définir notre intervalle de temps à deux minutes comme suit:

crontab

...

*/2 * * * * /home/sammy/wp-sync.sh

Après deux minutes, vous devriez voir un dépôt de fichiers horodaté dans votre espace. Vous pouvez maintenant modifier le fichiercrontab pour spécifier l'intervalle de temps que vous souhaitez utiliser pour vos sauvegardes.

Conclusion

Nous avons décrit plusieurs manières de sauvegarder vos données WordPress sur le service de stockage d’objets Spaces de DigitalOcean.

Pour en savoir plus sur l'utilisation dess3cmd et des espaces, consultez nosguide to configuring s3cmd 2x to manage DigitalOcean Spaces et notre tutoriel surmanaging DigitalOcean Spaces with s3cmd. Vous pouvez également consulter nos tutoriels surHow To Automate Backups with DigitalOcean Spaces etHow To Backup Your Git Repository To DigitalOcean Spaces pour plus d'exemples de scripts d'automatisation et d'options de sauvegarde. Enfin, pour plus d'informations sur l'optimisation de la façon dont vous utilisez Spaces, consultezBest Practices for Performance on DigitalOcean Spaces.

Related