De Drupal6 vers Drupal7 » Historique » Version 5
Julien Enselme, 29/05/2013 00:28
Déplacement de la partie technique dans Competences_techniques_apache_et_drupal
1 | 3 | Julien Enselme | --iabouljamal 19 mars 2011 à 07:08 (CET) |
---|---|---|---|
2 | 1 | Julien Enselme | |
3 | 1 | Julien Enselme | La communauté Drupal ne fournit pas le support des versions Drupal éternellement. Le jour de la sortie de Drupal8, la version 6 sera totalement abandonnée et le projet multi-asso ne bénéficiera plus des avantages pour lesquels Drupal a été choisi. |
4 | 1 | Julien Enselme | |
5 | 3 | Julien Enselme | Il nous est donc important de bien planifier la mise à jour vers Drupal 7 et de l'effectuer avant Février 2012 si possible. EDIT du 5 avril 2013 : avant la fin de support de drupal 6. |
6 | 1 | Julien Enselme | |
7 | 1 | Julien Enselme | Cet article a donc pour but de lister les problèmes qu'on rencontrera et les solutions qu'on a trouvé. En particulier les fonctionnalités des modules D6 qui ne passeront pas à D7 doivent être listées et les alternatives proposées. |
8 | 1 | Julien Enselme | |
9 | 3 | Julien Enselme | Des bouts de code, scripts et astuces pour les tâches à effectuer en masse sont particulièrement les bienvenues. |
10 | 1 | Julien Enselme | |
11 | 1 | Julien Enselme | {{toc}} |
12 | 1 | Julien Enselme | |
13 | 1 | Julien Enselme | h1. Planification |
14 | 1 | Julien Enselme | |
15 | 4 | Julien Enselme | {{warning(Ce planning peut être accéléré si les modules de drupal7 sont déja satisfaisants. Mais Le retarder serait comme prendre le risque de devoir passer à drupal8 deux mois après le passage à drupal 7 (enfin si le planning annoncé par la communauté est respecté !))}} |
16 | 1 | Julien Enselme | |
17 | 1 | Julien Enselme | * Réunion de validation de cette procédure (Team Assos -CRI) : **MARS-AVRIL** |
18 | 1 | Julien Enselme | * Blinder cette procédure : **MARS-AVRIL** |
19 | 1 | Julien Enselme | * Début de l'étape Préparation : **AVRIL-MAI** |
20 | 1 | Julien Enselme | * Fin de l'étape Préparation : **FIN MAI** |
21 | 1 | Julien Enselme | * Étape Tests des MAJ : **MAI-Octobre** |
22 | 1 | Julien Enselme | |
23 | 1 | Julien Enselme | Passage définitif à Drupal 7: **Novembre-Décembre** |
24 | 1 | Julien Enselme | |
25 | 1 | Julien Enselme | h1. Préparation |
26 | 1 | Julien Enselme | |
27 | 1 | Julien Enselme | h2. Veille sur le sujet |
28 | 1 | Julien Enselme | |
29 | 3 | Julien Enselme | De le lecture des blogs/forums et retour des autres drupaliens, on dresse une TODO de ce qu'on doit checker, ce qui pourrait poser problème : |
30 | 1 | Julien Enselme | |
31 | 3 | Julien Enselme | * La procédure de UPGRADE.TXT contient des conseils sur les fichiers à virer et quelques remarques sur le .htaccess. Il faut donc savoir le rapport avec ce qu'on a fait [[Utilisation_de_Drupal_multi-site#Choisir-et-implémenter-la-bonne-méthode-de-téléchargement-drupal-6|ici]]. Et meux que le upgrade.txt: la documentation sur le Upgrade process: http://drupal.org/node/570162 |
32 | 1 | Julien Enselme | |
33 | 3 | Julien Enselme | * Les modules qui sont désormais dans le core (Ex: CCK) ne s'auto-upgradent pas pendant la MAJ 6-7. CCK sera seul responsable de sa propre MAJ (cf smbjorklund .no/node/53) La documentation sur les modules qui ont rejoint le core : http://drupal.org/node/895314 |
34 | 1 | Julien Enselme | |
35 | 3 | Julien Enselme | * Un retour d'expérience d'un site .edu avec pas mal de modules : drupal.ucar.edu/docs/node/154 |
36 | 1 | Julien Enselme | |
37 | 1 | Julien Enselme | * des changements dans le thème Garland D7 font afficher des erreurs dont on se débarasse en rebuildant le registre du thème http://drupal.org/node/1147158 |
38 | 1 | Julien Enselme | |
39 | 1 | Julien Enselme | * http://rocktreesky.com/upgrading-drupal-7 |
40 | 1 | Julien Enselme | |
41 | 3 | Julien Enselme | h3. Un environnement de tests (sur assos) |
42 | 1 | Julien Enselme | |
43 | 3 | Julien Enselme | **Cette action peut être entamée dès MAINTENANT** |
44 | 1 | Julien Enselme | |
45 | 3 | Julien Enselme | Contrairement aux mises à jour D6.X D6.Y, je ne pense pas que le passage à D7 sera sans perte ; j'ai des doutes quant à l'existance d'une version D7 de certains modules utilisés par les associations ECM. Par conséquent, je ne pense par que la team doit prendre le risque de faire les MAJ directement sur les sites en ligne et je propose les étapes suivantes : |
46 | 1 | Julien Enselme | |
47 | 3 | Julien Enselme | # Extraire une version de la base de données et la copier dans une nouvelle base de donnés créée spécialement pour l'occasion (la restriction sur les sites les plus importants est suffisante : le forum et les sites des associations). |
48 | 1 | Julien Enselme | # Copier intégralement le repertoire html de 'assos' dans un nouveau repertoire dans html ou dans le html d'un compte test. |
49 | 1 | Julien Enselme | # Faire en sorte que la nouveau repertoire et la nouvelle base (copie) se parlent bien (que les sites fonctionnent) |
50 | 1 | Julien Enselme | |
51 | 1 | Julien Enselme | On a donc un environnement où on effectuera les tests de passage de Drupal6 à 7 sans aucune crainte ! |
52 | 1 | Julien Enselme | |
53 | 3 | Julien Enselme | h3. Un environnement de tests en local |
54 | 1 | Julien Enselme | |
55 | 5 | Julien Enselme | Suivre tout d’abord les consignes données [[Competences_techniques_apache_et_drupal|ici]] pour reproduire le site en local. Pour plus d’informations sur drush, voir [[Drush|ici]]. |
56 | 3 | Julien Enselme | |
57 | 5 | Julien Enselme | Vérifier les points suivant : |
58 | 3 | Julien Enselme | |
59 | 3 | Julien Enselme | * vérifier htaccess |
60 | 3 | Julien Enselme | * <code>mkdir d6up (drupal 7)</code> |
61 | 3 | Julien Enselme | * <code>drush dl drupal dans ce site</code> |
62 | 3 | Julien Enselme | * <code>cp settings d6 -> settings d7</code> |
63 | 3 | Julien Enselme | * copier la base de données d6 car elle va être écrasée |
64 | 3 | Julien Enselme | * voir du côté de conf.d et de etc/host |
65 | 3 | Julien Enselme | * attention aux base_url |
66 | 3 | Julien Enselme | * alias drush pour mettre à jour : |
67 | 3 | Julien Enselme | |
68 | 3 | Julien Enselme | * <code>drush @d6 en update</code> |
69 | 3 | Julien Enselme | * <code>drush @d6 sup @d6up</code> |
70 | 3 | Julien Enselme | |
71 | 3 | Julien Enselme | h3. Méthode alternative |
72 | 3 | Julien Enselme | |
73 | 3 | Julien Enselme | http://build2be.com/content/how-get-site-localhost |
74 | 3 | Julien Enselme | |
75 | 3 | Julien Enselme | h3. Nettoyage (Terminé) |
76 | 3 | Julien Enselme | |
77 | 1 | Julien Enselme | Il faut d'abord que D6 soit clean pour limiter les problèmes de migration: |
78 | 1 | Julien Enselme | |
79 | 3 | Julien Enselme | # DONE Il faut disparaitre les derniers liens symboliques fr.truc |
80 | 3 | Julien Enselme | # DONE Il faut supprimer les modules/thèmes qui n'ont pas d'équivalent D7 dans du serveur après être sûr que personne ne les utilise plus! cf [[Article_help_1_migration_6_7]] |
81 | 1 | Julien Enselme | (--[[Utilisateur:Ismaeil|ismaeil]] 21 avril 2011 à 00:48 (CEST) ça a pris du temps mais plus de la moitié des projets qui n'ont pas de version D7 (thèmes et modules) ont été supprimés car non utilisés ou seulemnt utilisé par des sites tests !) |
82 | 3 | Julien Enselme | # DONE Il faut voir le cas des rares sites qui ont un thème propre ou un module propre dans leur répertoire<br /> |
83 | 1 | Julien Enselme | # ---- [État : Terminé] |
84 | 1 | Julien Enselme | |
85 | 3 | Julien Enselme | Un cas intéressant est apparu lors du traitement du point 2 : un thème non utilisé, non D7isé et donc supprimable, et dès qu'on le supprime, des problèmes apparaissent car des thèmes ne sont que des surcharges du projet à supprimer. |
86 | 1 | Julien Enselme | |
87 | 3 | Julien Enselme | Conclusion : une tâche à ajouter serait de renommer tous les thèmes qui ne sont qu'une surcharge. Le nom doit commencer par les nom du thème père puis le nom mignon qu'on trouve. |
88 | 1 | Julien Enselme | done [[Utilisateur:LiNux ^^=!|LiNux ^^=!]] |
89 | 1 | Julien Enselme | |
90 | 3 | Julien Enselme | Par contre, attention, il reste des cas susceptibles de poser problème : certains thèmes viennent directement avec des sous-thèmes intégrés (cas aboutpeople et about), et on a un cas de surcharge de ce sous-thème : je n'ai pas renommé le sous-thème intégré |
91 | 1 | Julien Enselme | |
92 | 1 | Julien Enselme | h1. Réunions d'information |
93 | 1 | Julien Enselme | |
94 | 3 | Julien Enselme | # Réduire au maximum la liste des projets incompatibles en en parlant aux webmasters [[Article_help_1_migration_6_7]] |
95 | 1 | Julien Enselme | # Dire aux wabmasters qu'on a l'intention de passer à Drupal 7 pour différents raisons |
96 | 3 | Julien Enselme | |
97 | 3 | Julien Enselme | |
98 | 1 | Julien Enselme | * Réu en amphi (faut savoir que celà à un impact direct sur leur site : le thème va changer de look !) |
99 | 3 | Julien Enselme | * Invitation aux D&D (pour régler les problème du genre "ce module disparait mais la fonctionnalité dois rester car fondamentale pour le site") |
100 | 1 | Julien Enselme | |
101 | 1 | Julien Enselme | |
102 | 1 | Julien Enselme | h1. Mise à jour |
103 | 1 | Julien Enselme | |
104 | 1 | Julien Enselme | h2. Le café |
105 | 1 | Julien Enselme | |
106 | 1 | Julien Enselme | Il est strictement interdit (article L.3.2.1 du réglement intérieur) d'attaquer les mises à jour sans avoir pris du café ou thé. |
107 | 1 | Julien Enselme | |
108 | 1 | Julien Enselme | Il est strictement interdit (article L.3.2.2 du réglement intérieur) d'attaquer les mises à jour si on n'a dormi que 5 heures la veille. |
109 | 1 | Julien Enselme | |
110 | 1 | Julien Enselme | h2. Test des MAJ |
111 | 1 | Julien Enselme | |
112 | 1 | Julien Enselme | # Sauvegarder l'environnement des tests précédemment créé ! |
113 | 3 | Julien Enselme | # Effectuer une mise à jour vers Drupal 7 en suivant les recommandations du UPGRADE.txt de DRUPAL 7 (18 étapes) ou mieux : http://drupal.org/node/570162 |
114 | 3 | Julien Enselme | # Noter tous les problèmes rencontrés et les solutions trouvés et si pas de solution : trouver un contournement, l'essayer, le valider. |
115 | 3 | Julien Enselme | # Hacker les sites de l'environnement de test : Écraser le mot de passe d'admin, se connecter et voir si la vie est belle de l'autre coté ou si c'est rouge ! |
116 | 3 | Julien Enselme | # Une fois les problèmes réglés, **Répéter** cette étape avec une **nouvel environnement** de test et s'assurer qu'on maitrise vraiment le passage 6=>7 |
117 | 1 | Julien Enselme | |
118 | 1 | Julien Enselme | h2. Enfin Drupal7 ! |
119 | 1 | Julien Enselme | |
120 | 3 | Julien Enselme | # Alerter la liste drupal, voire webmasters de l'heure planifiée des mises à jour. |
121 | 1 | Julien Enselme | # Mettre les sites sous le mode maintenance 15 minutes avant le massacre ! |
122 | 1 | Julien Enselme | # S'assurer que l'étape des Tests des Maj est bien effectuée et avoir la liste des problèmes rencontrés et leurs solutions sous les yeux ! |
123 | 1 | Julien Enselme | # Sauvegarde des fichiers du repertoire html de 'assos' et des bases de donnés Forum et webassos. |
124 | 1 | Julien Enselme | # Croiser les doigts (mais le décroiser pour bien effectuer les étapes suivantes) |
125 | 1 | Julien Enselme | # Effectuer la mise à jour |
126 | 1 | Julien Enselme | # S'assurer que les sites de l'étape "Test des MAJ" survivent tous sans problème. |
127 | 1 | Julien Enselme | # supprimer CHANGELOG.TXT de l'installation |
128 | 1 | Julien Enselme | |
129 | 1 | Julien Enselme | h1. Tests massifs |
130 | 1 | Julien Enselme | |
131 | 1 | Julien Enselme | Après avoir silloner les sites des associations et être sur qu'il y a pas de mort. |
132 | 1 | Julien Enselme | |
133 | 1 | Julien Enselme | Un mail de communication sera envoyé à la liste drupal, voire webmasters... encourageant les webmasters à découvrir la nouvelle plateforme et de reporte à assos@centrale les problèmes rencontrés. |
134 | 1 | Julien Enselme | |
135 | 1 | Julien Enselme | h1. Réécriture des documentations |
136 | 1 | Julien Enselme | |
137 | 1 | Julien Enselme | Du fait du grand changement (au niveau de l'interface, mais aussi des terminologies de certains concepts) introduit par le passage à D7, une grande partie de nos tutoriels (wiki + site default) devront être mis à jour |
138 | 1 | Julien Enselme | |
139 | 1 | Julien Enselme | h1. Conclusions pour Drupal 8 |
140 | 1 | Julien Enselme | |
141 | 3 | Julien Enselme | Et oui, ce qui fait que le passage D6->D7 n'est pas aussi immédiat et risque d'être douloureux c'est principalement le nombre de projets qu'on a. Et si les thèmes peuvent être changés et adaptés voir re-développés, les modules quant à eux apportent des fonctionnalités dont on ne peut pas se passer parfois. |
142 | 1 | Julien Enselme | |
143 | 3 | Julien Enselme | Il faut alors tout de suite redéfinir les régles de l'ajout d'un module en s'appuyant sur les problèmes rencontrés lors du D6->D7. |
144 | 1 | Julien Enselme | |
145 | 3 | Julien Enselme | Je (iabouljamal) met des idées au hazard : |
146 | 3 | Julien Enselme | * Quand une fonctionnalitée peut être faite à l'aide des modules du core, toujours privilégier cette méthode (ou features) sur un autre module car on est pas sûr qu'il sera dispo pour D8 ! Il y a une tonne d'exemples à cela : tous les modules notify-like peuvent être remplacé par actions et triggers, les evenements par calendar, fields et views… |
147 | 3 | Julien Enselme | * être plus exigeant lors du choix d'un module : voir qui l'a développé, quel est l'état des autres projet qu'il développé. Est ce que la société pour qui il a développé ce module encourage les MAJ (par exemple si le module est sponsorisé par acquia on est sûr qu'il sera à jour avant même la nouvelle version !) |
148 | 1 | Julien Enselme | * features : ne pas en abuser, mais quand ça permet d’éviter un nouveau module on l'utilise . Attention cela veux dire qu'on doit réfléchir à la manière de les mettre à jour, un bout sql pour updater les tables !!! => c'est lourd et contraignant ! espérons que features sera plus clean dans le futur ! |
149 | 1 | Julien Enselme | |
150 | 1 | Julien Enselme | h1. Trucs divers |
151 | 1 | Julien Enselme | |
152 | 1 | Julien Enselme | h2. Les modules tiers utilisés |
153 | 1 | Julien Enselme | |
154 | 1 | Julien Enselme | En parcourant tous les sites, afficher les modules activés autres que ceux du noyau et écrire le résultat dans un fichier |
155 | 1 | Julien Enselme | |
156 | 1 | Julien Enselme | <pre> |
157 | 1 | Julien Enselme | <code class="bash"> |
158 | 1 | Julien Enselme | drushall pml |grep Enabled | grep -v Core >> modules.txt |
159 | 1 | Julien Enselme | </code> |
160 | 1 | Julien Enselme | </pre> |
161 | 1 | Julien Enselme | |
162 | 3 | Julien Enselme | Liste des modules et thèmes utilisés par le multi-asso qui n'ont pas encore une version D7 : [[Article_help_1_migration_6_7]] |
163 | 1 | Julien Enselme | |
164 | 1 | Julien Enselme | h2. Vérifier l'existance d'une version 7 |
165 | 1 | Julien Enselme | |
166 | 1 | Julien Enselme | --[[Utilisateur:Ismaeil|ismaeil]] 12 avril 2011 à 03:12 (CEST) |
167 | 1 | Julien Enselme | |
168 | 3 | Julien Enselme | On a plus d'une centaines de modules et thèmes et je ne trouve pas un moyen magique pour vérifier l'existance d'une version 7 que d'aller directement sur la page du projet : l'astuce est donc comment faciliter cette tâche lourde ! |
169 | 1 | Julien Enselme | |
170 | 1 | Julien Enselme | Voici la démarche que j'ai entreprise pour les modules (c'est la même pour les thèmes) |
171 | 1 | Julien Enselme | |
172 | 1 | Julien Enselme | # Avoir la liste des modules tiers dans un fichier text |
173 | 1 | Julien Enselme | <pre> |
174 | 1 | Julien Enselme | ls sites/all/modules > modules.txt |
175 | 1 | Julien Enselme | </pre> |
176 | 3 | Julien Enselme | # Transformer ce fichier en un fichier html qu'on peut ouvrir avec un navigateur web et cliquer simplement sur des liens vers les pages des projets. |
177 | 1 | Julien Enselme | On commence par créer le script makehtml.sh |
178 | 1 | Julien Enselme | <pre> |
179 | 1 | Julien Enselme | <code class="bash"> |
180 | 1 | Julien Enselme | #!/bin/bash |
181 | 1 | Julien Enselme | while read ligne |
182 | 1 | Julien Enselme | do |
183 | 1 | Julien Enselme | set $(echo $ligne) |
184 | 1 | Julien Enselme | project=$(eval echo $1) |
185 | 1 | Julien Enselme | #The file on which we write is in the next line |
186 | 1 | Julien Enselme | echo "<a href=\"http://drupal.org/project/$project\" target=\"_blank\">$project</a><br/>" >> sortie.html |
187 | 1 | Julien Enselme | #The file from which we read is in the next line |
188 | 1 | Julien Enselme | done < modules.txt |
189 | 1 | Julien Enselme | </code> |
190 | 1 | Julien Enselme | </pre> |
191 | 1 | Julien Enselme | Puis on lance le script dans le même répertoire que modules.txt |
192 | 1 | Julien Enselme | <pre> |
193 | 1 | Julien Enselme | sh makehtml.sh |
194 | 1 | Julien Enselme | </pre> |
195 | 1 | Julien Enselme | On aura un fichier sortie.html qu'on ouvre avec un navigateur web et on peut alors cliquer sur les liens ! |
196 | 1 | Julien Enselme | |
197 | 1 | Julien Enselme | h2. Script utilisation projet |
198 | 1 | Julien Enselme | |
199 | 3 | Julien Enselme | Il nous faut un script qui prend pour entrée le nom d'un projet (module thème) et qui liste les sites qui ont activé ce projet. |
200 | 1 | Julien Enselme | |
201 | 1 | Julien Enselme | Au début, nous utilision un script proche de drushall qui ressemblait à ça : |
202 | 1 | Julien Enselme | |
203 | 1 | Julien Enselme | <pre> |
204 | 1 | Julien Enselme | <code class="bash"> |
205 | 1 | Julien Enselme | # si pas d'arguments : |
206 | 1 | Julien Enselme | if [ $# -lt 1 ]; then |
207 | 1 | Julien Enselme | echo "usage: $0 <drush args>" |
208 | 1 | Julien Enselme | exit 1 |
209 | 1 | Julien Enselme | fi |
210 | 1 | Julien Enselme | |
211 | 1 | Julien Enselme | cd [drupal_directory]/sites |
212 | 1 | Julien Enselme | |
213 | 1 | Julien Enselme | for x in $(ls -1 | grep -v 'all' | grep -v other directories); do |
214 | 1 | Julien Enselme | if [ -d $x -a ! -L $x ]; then |
215 | 1 | Julien Enselme | cd $x; |
216 | 1 | Julien Enselme | echo $x |
217 | 1 | Julien Enselme | drush pml | grep $* |
218 | 1 | Julien Enselme | cd -; |
219 | 1 | Julien Enselme | fi |
220 | 1 | Julien Enselme | done |
221 | 1 | Julien Enselme | </code> |
222 | 1 | Julien Enselme | </pre> |
223 | 1 | Julien Enselme | |
224 | 3 | Julien Enselme | Puis, nous avons créé un script plus efficace, nommé [[Scripts_et_taches_planifiees#usep|usep ]](used project). |
225 | 1 | Julien Enselme | |
226 | 3 | Julien Enselme | Utilisation pour avoir l'état d'utilisation du theème tarski par rapport à tous les sites de l'installation : |
227 | 1 | Julien Enselme | <pre> |
228 | 1 | Julien Enselme | usep tarski |
229 | 1 | Julien Enselme | </pre> |
230 | 1 | Julien Enselme | |
231 | 1 | Julien Enselme | h2. Script changement thème |
232 | 1 | Julien Enselme | |
233 | 3 | Julien Enselme | Il nous faut un script qui active un autre thème : <code>drush en le_theme</code> puis qui définit ce dernier thème activé comme thème par defaut : <code>drush vset theme_default nom-de-mon-thème </code>. Enfin qui désactive le thème d'un site : <code>drush dis le_theme </code> et, plus un autre qui définit le thème d'administration au thème par defaut par exemple <code>drush vset admin_theme nom-de-mon-thème </code> |
234 | 1 | Julien Enselme | |
235 | 1 | Julien Enselme | Ce script sera utilisé pour changer les thèmes des sites dont on peinera à trouver le webmaster pour passer à un thème D7 friendly ! |
236 | 1 | Julien Enselme | |
237 | 1 | Julien Enselme | h1. Après le D7 |
238 | 1 | Julien Enselme | |
239 | 3 | Julien Enselme | h2. Retester la méthode création de sous site |
240 | 1 | Julien Enselme | |
241 | 1 | Julien Enselme | La mettre à jour et update de la doc sur le wiki |
242 | 1 | Julien Enselme | |
243 | 1 | Julien Enselme | h2. retester le script de Maj des modules |
244 | 1 | Julien Enselme | |
245 | 3 | Julien Enselme | Le mettre à jour et update de la doc sur le wiki |