Vous êtes-vous déjà demandé comment utiliser le contrôle de version avec WordPress? Si vous préférez travailler sur vos projets WordPress localement mais que vous devez les synchroniser à distance, ce tutoriel est pour vous. Vous avez probablement essayé de synchroniser les deux configurations en téléchargeant manuellement les fichiers modifiés et en utilisant PHPmyAdmin pour exporter et importer votre base de données une fois modifiée et (très probablement) interrompu quelque chose au cours du processus. Dans ce tutoriel, nous allons automatiser le processus de synchronisation; afin que vous puissiez vous concentrer sur ce que vous êtes censé faire au lieu de vous battre avec des migrations sans fin.
Nous commençons généralement le développement WordPress sur nos machines locales. C'est toujours plus rapide et plus facile, surtout lorsque vous avez une connexion Internet lente. Mais il y a des moments où vous devez travailler à distance. Vous voudrez peut-être apporter une petite modification, corriger un bourrage ou simplement publier un nouveau message. Les modifications ne sont pas enregistrées sur votre ordinateur local WordPress et le désordre commence à ce moment-là..
Le désordre commence parce que vous pouvez avoir besoin de publier une nouvelle version et, puisque vous travaillez en local, les modifications que vous avez apportées à distance doivent être mises hors ligne. C'est une vraie douleur. Vous devez déterminer quels fichiers vous avez modifiés et les télécharger / les transférer par FTP. Parfois, les modifications se produisent dans la base de données, vous avez donc besoin d'un outil spécial comme phpmyAdmin pour les intégrer..
Dans le processus, vous pouvez casser quelque chose ou oublier une modification. C'est alors que tout devient sale. Dans ce cas, vous avez besoin de deux choses: le contrôle de version et la synchronisation. Dans ce tutoriel, je vais décrire la solution que je suis pour organiser mon développement et la synchronisation entre ma machine locale et mon serveur distant..
Tout d’abord, laissez-moi vous expliquer ce que nous allons faire. Notre objectif est de synchroniser facilement entre la version distante et la version locale. Vous travaillerez dans la version qui vous plait et les rend ensuite identiques. Pour ce faire, nous devons d’abord tenir compte des différences entre la configuration distante et locale..
WordPress stocke des informations sur votre blog dans des fichiers statiques et dans votre base de données. Certaines de ces informations sont relatives à votre hébergement actuel. C'est pourquoi lorsque vous téléchargez tout votre répertoire WordPress et remplacez la version distante, cela ne fonctionnera pas..
Les informations sont malheureusement divisées en deux parties:
Pour wp-config.php, nous allons implémenter un processus qui détecte si nous sommes sur le serveur local ou distant. De cette façon, le même fichier fonctionnera dans les deux environnements. Pour la base de données, nous allons l'intégrer au système de contrôle de version et la mettre à jour pour qu'elle corresponde aux paramètres de l'hôte local ou distant..
J'utilise Mercurial pour le contrôle de version. Git est plus populaire dans le domaine du développement Web, mais dans notre cas, ils sont presque similaires: vous avez simplement besoin d'un outil de contrôle de version..
Choisissez Mercurial si vous êtes sur une machine Windows. Il a Tortoise, une interface conviviale, pour gérer vos référentiels. L'outil de contrôle de version doit être installé sur vos machines locales et distantes. Cela dit, vous aurez besoin d’un serveur dédié ou d’un VPS pour pouvoir installer l’application tierce..
Pour initialiser un référentiel dans Mercurial, tapez ce qui suit dans votre console
cd / mydev_directory hg init hg ajouter hg commit
Dans la première ligne, nous modifions notre répertoire de travail par le dossier dans lequel nous souhaitons activer le contrôle de version. Ce sera votre répertoire WordPress (où vous installerez WordPress). La ligne suivante initialise le référentiel. La troisième ligne indique à mercurial de contrôler la version de tous les fichiers du répertoire. Cela inclura aussi les sous-dossiers. La dernière ligne crée un nouveau jeu de modifications dans le répertoire; votre éditeur de texte s'ouvrira et vous serez invité à écrire une description de ce commit.
Ce tutoriel ne couvre pas comment utiliser Mercurial. Si vous ne connaissez pas le contrôle de version, vous devriez l'apprendre. C'est un outil important à ajouter à vos compétences. Voici quelques tutoriels que je suggère:
Nous allons faire une nouvelle installation de WordPress dans notre machine locale. Téléchargez la dernière version de WordPress, extrayez-la dans un répertoire vide de votre choix sur votre serveur Web et installez-la à partir de votre navigateur ou en modifiant le fichier wp-config.php..
Nous allons maintenant activer le contrôle de version dans notre répertoire WordPress
cd / testpress Hg init Hg ajouter Hg commit
Ces commandes initialisent le référentiel et créent le premier jeu de modifications. Maintenant, nous pouvons simplement cloner ce référentiel sur notre serveur, installer WordPress et être en mesure de procéder à une synchronisation entre la distribution locale et distante..
Cependant, il existe des différences, comme nous l'avons dit plus tôt. Avant d'implémenter le processus de synchronisation, nous devons implémenter un script qui vérifie l'emplacement d'installation de WordPress et charge les bons paramètres..
Les paramètres à modifier sont les informations de la base de données. Ils se trouvent dans le fichier wp-config.php et WordPress les charge à partir de ce fichier. Ma version locale ressemble à ceci
// ** Paramètres MySQL - Vous pouvez obtenir ces informations auprès de votre hôte Web ** // / ** Le nom de la base de données pour WordPress * / define ('DB_NAME', 'test'); / ** Nom d'utilisateur de la base de données MySQL * / define ('DB_USER', 'root'); / ** Mot de passe de la base de données MySQL * / define ('DB_PASSWORD', 'xxxxx'); / ** Nom d'hôte MySQL * / define ('DB_HOST', 'localhost'); / ** Jeu de caractères de base de données à utiliser lors de la création de tables de base de données. * / define ('DB_CHARSET', 'utf8'); / ** Le type Database Collate. Ne changez pas cela en cas de doute. * / define ('DB_COLLATE', ");
Notez que je n'ai copié que la partie qui compte. Sur mon serveur distant, cette partie devrait différer légèrement
// ** Paramètres MySQL - Vous pouvez obtenir ces informations auprès de votre hôte Web ** // / ** Le nom de la base de données pour WordPress * / define ('DB_NAME', 'user_blog'); / ** Nom d'utilisateur de la base de données MySQL * / define ('DB_USER', 'root'); / ** Mot de passe de la base de données MySQL * / define ('DB_PASSWORD', 'xyxyx'); / ** Nom d'hôte MySQL * / define ('DB_HOST', 'localhost'); / ** Jeu de caractères de base de données à utiliser lors de la création de tables de base de données. * / define ('DB_CHARSET', 'utf8'); / ** Le type Database Collate. Ne changez pas cela en cas de doute. * / define ('DB_COLLATE', ");
L'astuce consiste à écrire du code qui détecte l'emplacement de WordPress. La variable à utiliser est la variable PHP _SERVER ["HTTP_HOST"]. Le code évalue la variable et affecte les paramètres de la base de données..
/ * * Variables unifiées * / $ nom_utilisateur = 'root'; $ hostname = 'localhost'; $ charset = 'UTF-8'; $ collate = "; / * * Vérifiez l'environnement actuel * / if ($ _SERVER [" HTTP_HOST "] === 'onlineqrlab.com') $ db_name = 'user_wordpress'; $ password = 'xyxyxy'; else if ($ _SERVER ["HTTP_HOST"] === 'localhost') $ db_name = 'test'; $ password = 'xxxxxx'; ** Paramètres de MySQL - Vous pouvez obtenir ces informations auprès de votre hôte Web ** // / ** Nom de la base de données pour WordPress * / define ('DB_NAME', $ db_name); / ** Nom d'utilisateur de la base de données MySQL * / define ('DB_USER', $ user_name); / ** Mot de passe de la base de données MySQL * / define ('DB_PASSWORD', $ password); / ** Nom d'hôte MySQL * / define ('DB_HOST', $ hostname); / ** Base de caractères à utiliser pour la création de tables de base de données. * / define ('DB_CHARSET', $ chartset) ; / ** Type de base de données. Ne modifiez pas cette option en cas de doute. * / Define ('DB_COLLATE', $ collate);
Dans l'exemple ci-dessus, deux paramètres seulement ont été modifiés: nom de la base de données et mot de passe. Vous pouvez avoir plus que cela. Par exemple, si vous hébergez mySql sur un serveur externe, vous devez modifier le nom d'hôte pour la configuration de votre serveur distant. Vous feriez mieux de limiter également l'accès du blog WordPress au niveau utilisateur avec des capacités limitées au lieu du niveau administrateur.
Vérifiez que votre version locale de WordPress fonctionne. Si c'est le cas, vous avez presque terminé!
Vous pouvez maintenant commencer à travailler sur votre installation WordPress locale. Chaque fois que vous effectuez une modification majeure, faites un commit avec Mercurial pour suivre les modifications. Sur le serveur distant, en supposant qu'Apache soit installé, créez un nouveau dossier dans lequel vous allez télécharger votre référentiel WordPress..
cd / apache mkdir mywp_repo cd mywp_repo
Notez que ces commandes doivent être exécutées sur votre serveur distant. Vous aurez également besoin d’un accès SSH et d’une ligne de commande. J'utilise Putty sous Windows pour me connecter à mon serveur.
Une fois que notre référentiel est initialisé, nous pouvons pousser (télécharger) et extraire (télécharger) des ensembles de modifications à partir d'autres référentiels pour le maintenir à jour. Pour que ce processus se produise, vous aurez besoin de votre serveur local ou distant pour publier le référentiel afin de pouvoir extraire / pousser à partir de celui-ci..
Le serveur Web Mercurial manque certaines fonctionnalités importantes telles que le contrôle d'accès, l'authentification et SSL. Il n'est donc pas sûr de l'utiliser sur votre serveur distant. De préférence, vous devrez exécuter le serveur Web Mercurial localement et extraire les modifications du serveur local vers le serveur distant..
Pour exécuter le serveur Mercurial, tapez ce qui suit sur votre ordinateur local:
hg servir
Vous devriez maintenant pouvoir accéder à votre référentiel à partir de votre navigateur. Tapez l'URL qui s'affiche sur votre ligne de commande. Habituellement, c'est localhost: 8000. Le référentiel est également disponible en ligne. Vous pouvez y accéder depuis n’importe quel ordinateur connecté à Internet en utilisant votre adresse IP: 8000.
Hg pull 192.xxx.xxx.xxx:8000 Hg mise à jour
Mais je ne recommande pas cette méthode car elle n'est pas sécurisée. Il existe un moyen simple et sûr de le faire. C'est un référentiel intermédiaire hébergé par un service tiers. J'utilise BitBucket. Il propose un service fiable et de qualité, ainsi qu'un suivi des bugs et un wiki..
Inscrivez-vous et créez un compte dans BitBucket. Ils offrent des dépôts illimités privés et publics avec un maximum de 5 utilisateurs gratuits. Créez un nouveau référentiel dans BitBucket et vous devriez être redirigé vers cette page.
BitBucket prend en charge HTTPS et SSH. Si votre référentiel est privé, comme dans mon cas, vous devrez vous authentifier avec votre nom d'utilisateur et votre mot de passe pour pouvoir envoyer et extraire du référentiel..
Après avoir créé votre nouveau référentiel dans BitBucket, exécutez les commandes suivantes sur votre ordinateur local.
hg push https: //[email protected]/username/repository
Vous serez invité à fournir votre mot de passe et le référentiel sera téléchargé sur BitBucket. Après avoir téléchargé sur BitBucket, clonez le référentiel sur votre serveur distant..
hg clone https: //[email protected]/username/repository hg update
Le clonage télécharge les fichiers dans un nouveau répertoire (le nom étant identique à celui de votre répertoire de référentiel); vous pouvez renommer ce répertoire. Cela rendra la première étape de cette section (où nous avons créé le répertoire d'installation de WordPress) plutôt obsolète.
Pensez à BitBucket en tant qu'intermédiaire entre votre ordinateur et votre hôte distant. Il est possible d'avoir votre propre serveur sécurisé Mercurial sur votre serveur distant, mais cela sort du cadre de ce tutoriel. L'avantage est d'être indépendant de l'homme du milieu. Cela permet de transmettre les modifications directement à votre serveur Web..
Alors, comment est-ce mieux que FTP?
Déjà fatigué? Ne vous inquiétez pas, nous y sommes presque. Après avoir extrait le référentiel à partir de votre ordinateur local ou de BitBucket, vous devrez relancer l’installation de WordPress. cette fois sur le site du serveur distant. Assurez-vous que les paramètres que vous avez définis dans le fichier wp-config.php que nous avons défini précédemment sont corrects et chargez votre site distant WordPress..
Vous serez invité à réinstaller votre blog WordPress, car votre base de données est vide. Après l'installation, votre blog WordPress est prêt. Vous pouvez apporter des modifications à la version distante ou locale et les synchroniser avec Mercurial..
Mais il reste un problème important: la base de données ne se synchronise pas avec les fichiers. Ceci est important car des éléments tels que des articles de blog, des commentaires, des tableaux personnalisés de plug-ins? ne sera pas le même dans la version locale et distante.
WordPress a une fonctionnalité d'importation / exportation. Mais ce n'est pas utile, car cela ne fait pas une vraie synchronisation. Ce qu'il vous faut, c'est d'aller dans votre phpmyadmin, d'exporter toutes vos tables WordPress d'un côté (distant ou local), puis d'aller de l'autre côté de phpmyadmin et de remplacer les tables..
Après cela, vos bases de données WordPress deviendront les mêmes. Cependant, vous devrez modifier la ligne site_url dans la table wp_options. Ce processus devient douloureux à mesure que la base de données devient plus lourde.
Comme nous l'avons vu précédemment, la base de données est un peu problématique. Il n'est pas synchronisé avec les fichiers, il est plus difficile à atteindre et nécessite la mise à jour de deux champs à chaque synchronisation. Ce n'est pas amusant de le faire encore et encore. L'automatisation est la solution. en fait, c'est notre travail.
Ce dont nous avons besoin, c'est d'un script qui synchronise les bases de données locale et distante sans rien casser. L'idée qui m'est venue à l'esprit est d'inclure la base de données dans le contrôle de révision. Le contenu de la base de données sera exporté dans un fichier suivi par le contrôle de révision. Chaque fois que nous extrairons des modifications, le contenu de la base de données sera remplacé par ce fichier, ce qui actualisera notre base de données..
Puisqu'il y a quelques lignes qui diffèrent d'un hôte à l'autre (l'URL du site et l'URL de la page d'accueil), nous avons besoin d'un autre script mysql qui met à jour celles-ci avec les bonnes valeurs..
Les conflits sont une autre chose importante. Si vous travaillez et apportez des modifications (validations) à la version distante et à la version locale, cela créera un conflit. Un scénario typique est lorsque vous travaillez et que vous vous engagez dans votre version locale, et que quelqu'un (en ligne) ajoute un nouveau contenu à votre blog. Je ne peux pas vous aider dans cette situation, vous devez en savoir plus sur la fusion et le travail d'équipe de Mercurial (ou de votre système de contrôle de révision).
Pour éviter les conflits, assurez-vous d'extraire le référentiel de BitBucket avant d'apporter des modifications. et aussi valider et transmettre les modifications à BitBucket après les avoir effectuées. Cela garantira que BitBucket a toujours la dernière version et que vous travaillez également sur la dernière version..
Cette étape est un peu sensible, alors assurez-vous de suivre attentivement ces étapes. Tout d'abord, je vais expliquer comment fonctionne la solution finale. Vous allez avoir deux scripts: push et pull. Selon votre système d'exploitation, ce sera push.sh et pull.sh (Linux) ou push.bat ou pull.bat (Windows). J'utilise Windows localement et Linux (Ubuntu) à distance. Ce tutoriel couvrira donc les deux systèmes d'exploitation..
Le premier script transmettra les modifications au serveur Bitbucket. Lorsque vous apportez des modifications à la base de données, utilisez le script push pour télécharger les modifications dans votre référentiel BitBucket. Push déchargera la base de données actuelle dans un fichier (/db/db_sync.sql) suivi par le système de contrôle de version. Le fichier sera poussé avec les autres fichiers et téléchargé sur BitBucket.
Le second script extraira les modifications du serveur Bitbucket. Le script d'extraction lira également le fichier (/db/db_sync.sql) et remplacera la base de données. Cela mettra à jour la base de données avec la version que vous avez poussée. Puisqu'ils ont des noms d'hôte différents, le script d'extraction modifiera les champs nécessaires, à savoir l'URL du site et l'URL de la page d'accueil..
Sur le serveur distant et le serveur local, créez un nouveau répertoire appelé "db". Le fichier de base de données exporté sera enregistré ici. Sur votre serveur local (je suppose que vous utilisez Windows), créez un nouveau fichier appelé push.bat. Peu importe où vous avez placé le fichier (assurez-vous simplement que vous utilisez les bons chemins). Je mets le fichier dans le répertoire racine de mon référentiel WordPress.
mysqldump -u nom_utilisateur -ppassword nom_base_données> db / db_sync.sql hg add db / db_sync.sql hg commit hg push https: //[email protected]/nomutilisateur/répositif
Vous pouvez supprimer la commande "hg add db / db_sync.sql" après avoir exécuté le script pour la première fois. Ceci n'est requis qu'une fois.
Du côté du serveur (Linux / Ubuntu), les choses ne sont pas très différentes. L'extension de fichier change de .bat à .sh, et éventuellement votre nom d'utilisateur, votre mot de passe et votre nom de base de données mySql. Le contenu du fichier est exactement le même.
Tirer est un peu plus difficile. Cela nécessite d'importer le fichier SQL et de modifier également certains champs critiques différents d'un environnement à l'autre..
Dans votre ordinateur local, créez un fichier appelé pull.bat.
hg pull https: //[email protected]/username/repository hg update cd db mysql -u nom d'utilisateur -ppassword testpress < db_sync.sql mysql -u username -ppassword testpress < db.sql
Dans votre dossier db, ajoutez un fichier appelé "db.sql". Ce fichier contient des instructions SQL qui effectueront les modifications requises pour correspondre aux paramètres de l'hôte. Vous pouvez ajouter plus de déclarations si vous avez besoin de.
UTILISEZ testpress; UPDATE wp_options SET option_value = "http: // hôte local / testpress" WHERE nom_option = "siteurl"; UPDATE wp_options SET option_value = "http: // hôte local / testpress" WHERE nom_option = "home";
Mis à part l'extension de fichier, les paramètres mySql et la base de données, rien ne change vraiment sur le serveur distant. C'est parce que nous exécutons des commandes de programmes. Les commandes et leur utilisation sont indépendantes de la plate-forme. Assurez-vous que vous entrez les valeurs correctes pour l'URL du site Web dans le fichier "db.sql". Ils doivent correspondre à l'URL de votre blog, si vous n'êtes pas sûr de pouvoir toujours vérifier les valeurs de la table wp_options..
Pour exécuter les scripts, sous Windows, double-cliquez sur le fichier? .Bat? fichier et dans votre terminal de serveur distant, exécutez la commande? sh nom_script.sh?.
Vous devriez maintenant avoir 2 fichiers exécutables dans chaque environnement (pull et push). Vous devriez également avoir un script SQL (db.sql) qui ne devrait pas être ajouté au contrôle de version. Nous pouvons maintenant tester notre petit système.