Comment migrer d'un environnement de test à un environnement de production?


46

La migration s'effectue de l'environnement local vers l'environnement de production. L'environnement de production a duré un certain temps et créé de nombreux articles.

Afin d'ajouter de nouvelles choses à mon site, j'ai ajouté un thème personnalisé et installé CCK, Views et d'autres modules dans mon environnement de test local. Maintenant que l'environnement de test local est terminé, comment puis-je le migrer vers l'environnement de production sans détruire le contenu de sa base de données?

Réponses:


34

Il s'agit d'un problème non trivial pour lequel presque tout le monde a une réponse différente: il n'y a pas de méthode canonique Drupal pour gérer la mise en scène en pousses de production. Dries Buytaert, le responsable du spectacle Drupal, en a fait l’une des initiatives clés de Drupal 8 . Bien sûr, Drupal 7 vient de sortir, il faudra donc attendre longtemps avant de porter ses fruits.

Le problème peut être divisé en deux problèmes distincts:

  • Configuration intermédiaire (variables, types de contenu, champs, vues, etc.)
  • Contenu de staging (nœuds, utilisateurs, etc.)

Les premières peuvent être gérées principalement par le module Features , qui transformera votre configuration de site en un module que vous pourrez ajouter à votre installation Drupal: vous pourrez ainsi l'ajouter à votre système de contrôle de version sans avoir à vous en soucier. être époustouflé lorsque vous migrez votre contenu.

Ce dernier point est vraiment délicat, car sur un site actif, il est probable que le contenu change en production même après la synchronisation initiale avec votre environnement de développement. Cela empêche le remplacement en gros du contenu lors de la mise en place, comme vous pouvez le faire avec la configuration.

De plus, Drupal n'utilise pas d'identificateurs universels uniques (UUID) pour le contenu: chaque fois qu'un nœud ou un utilisateur est ajouté, l'ID augmente de un. Le noeud 45 de votre site de développement peut donc être le noeud 90 de votre site de production.

Malheureusement, je n'ai pas de bonne solution pour cela: la mise en page de contenu est une faiblesse réelle de Drupal. Ce que je fais personnellement, c'est ajouter du contenu sur le site de production uniquement. Si un client souhaite savoir à quoi ressemble le contenu avant sa mise en ligne, je vais configurer un clone du site de production uniquement accessible au client. Ensuite, une fois approuvées, les mêmes modifications sont ensuite apportées directement à la production.

Une autre alternative est proposée: le module Deploy . Il est supposé utiliser les services pour rendre le contenu de la mise en scène relativement simple. Mais je ne peux pas garantir son efficacité et il n’a pas de version Drupal 7.


Vous pouvez migrer du contenu en utilisant uuid et uuid_features, mais ce n’est pas encore fiable.
Jeremy French

7

Dans notre processus.

  1. Nous avons un script shell qui tire la base de données de prod.
  2. Nous utilisons Hudson pour reconstruire nos branches dev / staging afin de synchroniser les branches live et dev.

    Depuis que nous utilisons Git, chaque tâche que nous effectuons a sa propre branche, puis, lorsqu'elle est transmise au contrôle qualité, nous la fusionnons en maître pour servir de serveur de transfert pour les tests de régression.

    Lorsque le master est prêt, nous effectuons une version de test de notre Release Serverqui est une réplique de live (configuration, matériel, etc.).

  3. Nous utilisons le Featuremodule pour déployer des configurations. Certains éléments ne sont pas encore pris en charge par les fonctionnalités. Nous utilisons donc hook_update_N, puis exécutons updatedb.php oudrush -vd updb

  4. Après la publication, exécutez Features revert ( drush fra --yes) pour rétablir toutes les fonctionnalités remplacées.
  5. Puisque nous utilisons Boost (en passant à Varnish) et Memcache, nous devons effacer le cache ( drush cc all).

    Nous utilisons rsync pour synchroniser nos images / vidéos, etc.


Pouvez-vous préciser l’étape 2 - Utilisation de Git Je comprends que nous pouvons fusionner facilement les modifications apportées au système de fichiers, mais comment vous assurez-vous de l’intégrité de la base de données? Aussi, quel est exactement le but d'utiliser "Fonctionnalités" (pour déployer des configurations) ici? Je vous remercie!
Raj Pawan Gumdal

2

Pour migrer d'un serveur XAMPP vers un autre serveur, j'ai suivi les instructions affichées sur ce site .

Assurez-vous de conserver la même structure sur votre serveur de production que sur votre serveur de développement. J'ai également dû modifier certains fichiers dans le tableau de bord de l'administrateur Drupal situé à l' adresse suivante : admin / config / media / système de fichiers

Assurez-vous que les emplacements corrects sont définis pour votre chemin de système de fichiers public et votre répertoire temporaire .


Cela ne parle jamais du problème de "fusion". La question indique clairement que la production contient des données de contenu qui doivent être intactes, tandis que les améliorations apportées par le serveur de transfert doivent être intégrées à la production.
Raj Pawan Gumdal
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.