Je sais que cette question est un peu plus ancienne, mais comme je ne l’ai pas vu ici, j'aimerais partager ce que je fais normalement pour les installations et les déploiements basés sur git sur un seul site et cela fonctionne très bien, même si vous travaillez à partir de plusieurs. périphériques, emplacements et avec plusieurs développeurs (tous ayant leur propre dépôt local dans lequel ils opèrent, comme c'est commun pour git).
Je peux suggérer chaleureusement la configuration suivante:
Il est également décrit dans (si vous avez besoin d'une deuxième ressource pour bien comprendre):
Cela fonctionne essentiellement (avec au moins trois pensions) en:
- mettre le site web sur l'hôte live sous git,
- créer un nouveau référentiel Git nu sur l'hôte actif.
- Et branchez ensuite du référentiel nu à votre (vos) dépôt (s) git de développement local.
Lorsque le travail est terminé, vous appuyez sur le dépôt nu distant à partir duquel vous avez cloné. Le référentiel nu a des points d'ancrage pour la synchronisation avec le référentiel en direct (dans les codes ci-dessus appelés prime ).
En tant que paramètres spécifiques de Wordpress dans le référentiel, j'ai ceci .gitignore
:
# uploads are data, excluded from source tree
wp-content/uploads/
Le reste incl. le plugin et la configuration du thème que je conserve sous contrôle de version / configuration. Cela me permet de suivre facilement les modifications et de réviser le code avant de l’ utiliser en direct. Je peux aussi plus facilement fusionner contre des arbres distants avec mes propres modifications. Cela est particulièrement utile contre le noyau Wordpress disponible sur Github .
Cela fonctionne assez bien pour la plupart de mes besoins Wordpress. Le repo nu vous empêche de pousser des modifications contradictoires. Il se synchronise également sur une copie distante avant de mettre à jour le site actif. Cela signifie que la mise à jour du site en direct est normalement assez rapide. Grâce aux points d'ancrage, vous pouvez même appeler les points d'ancrage de mise à jour Wordpress ultérieurement si vous le souhaitez.
Si je n'ai pas expérimenté dans quelle mesure cela peut être amélioré avec les hooks Github, mais normalement je n'en ai pas besoin car le code est sous contrôle de version local, pas Github.
Pour configurer un tel système pour la première fois, prenez le temps d'évaluer si vous disposez de tous les outils disponibles sur votre hôte distant:
- Accès SSH
- GIT
- Un répertoire privé dans lequel vous pouvez mettre des fichiers et des sous-répertoires (par exemple pour votre dépôt Git nu)
Le temps d'installation pour la première fois devrait être possible dans un délai de deux heures, incl. tout l'environnement et vous publiez d'abord push.
En fonction de votre hôte, vous pouvez également vouloir protéger le .git
répertoire de l'accès Web. Voici un exemple de .htaccess
code permettant de conserver Wordpress dans un sous-répertoire, ce qui laisse un espace dans le référentiel non publié en ligne (utile):
Options -Indexes
# fix trailing slash for .git / make it disappear + .gitignore and similar files.
RedirectMatch 404 ^/\.git(.*)$
# mask 403 on .ht* as 404
<Files ~ "^\.ht">
Order Deny,Allow
Allow from all
Satisfy All
Redirect 404 /
</Files>
RewriteEngine On
RewriteBase /
# map everything into public and set environment var
# to tag the request being valid
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule ^(.*)$ /public/$1 [E=sitealias:set,L]
En bref, tout ce qui n'est pas dans l' annuaire public n'est pas en ligne. À l'intérieur du répertoire public , vous pouvez trouver le wordpress codebase, par exemple .htaccess
:
RewriteEngine On
# mask as 404 if directly accessed
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule .* - [L,R=404]
Cela empêche l'accès direct au public . Une partie de ce fichier .htaccess -foo que vous pouvez trouver est décrite ci-dessous: Les demandes adressées à .htaccess doivent renvoyer 404 au lieu de 403 . Pour les variables d’environnement, vous devez vérifier si cela fonctionne dans votre environnement. Vous devez également décider si vous placez cela sous contrôle de version ou non.
Si vous avez plus de contrôle sur l'hébergement, vous pouvez faire plus de choses ici (et différemment / plus optimisées), les exemples ci-dessus sont destinés aux environnements d'hébergement partagé typiques (qui offrent GIT, certains utilisateurs disent que vous pouvez facilement l'installer vous-même. eh bien, je demande normalement à mes hébergeurs de fournir cela, car je préfère que s’ils s’occupent de ce que je leur paye).
Du côté négatif, cela présente certains des problèmes communs également décrits dans les autres réponses. Une chose dont je ne suis pas fier, mais ce qui fonctionne, c’est de donner à l’hôte de développement une modification de son fichier d’hôte pour que le serveur de base de données pointe sur la copie de développement. Vous pouvez donc conserver une configuration de base de données. Pas vraiment cool esp. à cause des informations d'identification.
Sauvegardes automatiques
Cependant, normalement, je ne me soucie guère de faire cela ici, mais de faire des sauvegardes quotidiennes sur les systèmes distants qui sont incrémentiels et qui sont eux-mêmes stockés dans un autre emplacement distant. C’est simple et peu coûteux et vous permet de restaurer à la fois l’installation Wordpress ainsi que les fichiers téléchargés, la base de données et le référentiel git. Également pour mes commandes de sauvegarde, je ne serais peut-être pas parfaitement d'accord, mais cela fonctionne pour moi:
mysql: mysqldump --host=%s -u %s --password=%s %s| gzip > %s
git : git gc
git bundle
files: tar --force-local -czf %s %s
Ce que je suggère ici est que vous gardiez les processus autour de votre installation Wordpress en dehors de Wordpress. Ils doivent être exécutés sur un système spécifique. Par conséquent, ils ne sont normalement pas intégrés à l'application (par exemple, une application peut disparaître mais vous devez les faire continuer).
Activé pour le travail d'équipe
Un autre avantage intéressant est que votre site est déjà activé pour le travail en équipe. Grâce à la mise à nu supplémentaire, vous ne pouvez pas faire grand chose de mal et vous pouvez même partager des branches distantes en dehors d'une branche principale ou en direct avec vos collègues.