Projet

Général

Profil

De Drupal6 vers Drupal7 » Historique » Version 2

Julien Enselme, 05/04/2013 19:15
Suppression catégorie (reste mediawiki)

1 1 Julien Enselme
--[[Utilisateur:Ismaeil|ismaeil]] 19 mars 2011 à 07:08 (CET)
2
3
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
5
Il nous est donc important de bien planifier la mise à jour vers Drupal 7 et de l'effectuer avant Février 2012 si possible.
6
7
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
9
Des bouts de code, scripts et astuces pour les tâches à effectuer en masse sont particulièrement les bienvenues
10
11
{{toc}}
12
13
h1. Planification
14
15
<note> Attention | 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é !)</note>
16
17
* Réunion de validation de cette procédure (Team Assos -CRI) : **MARS-AVRIL**
18
19
* Blinder cette procédure : **MARS-AVRIL**
20
21
* Début de l'étape Préparation : **AVRIL-MAI**
22
23
* Fin de l'étape Préparation : **FIN MAI**
24
25
* Étape Tests des MAJ : **MAI-Octobre**
26
27
Passage définitif à Drupal 7: **Novembre-Décembre**
28
29
h1. Préparation
30
31
h2. Veille sur le sujet
32
33
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:
34
35
* 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 [http://ginfo.centrale-marseille.fr/wiki/index.php/Choisir_et_impl%C3%A9menter_la_bonne_m%C3%A9thode_de_t%C3%A9l%C3%A9chargement ici]
36
37
Et meux que le upgrade.txt: la documentation sur le Upgrade process: http://drupal.org/node/570162
38
39
* 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)
40
41
La documentation sur les modules qui ont rejoint le core: http://drupal.org/node/895314
42
43
* Un retour d'expérience d'un site .edu avec pas mal de modules: drupal.ucar .edu/docs/node/154
44
45
* 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
46
47
* http://rocktreesky.com/upgrading-drupal-7
48
49
h3. Un environnement de tests
50
51
**Cette action peut être entamée dés MAINTENANT**
52
53
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:
54
55
# 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)
56
# Copier intégralement le repertoire html de 'assos' dans un nouveau repertoire dans html ou dans le html d'un compte test.
57
# Faire en sorte que la nouveau repertoire et la nouvelle base (copie) se parlent bien (que les sites fonctionnent)
58
59
On a donc un environnement où on effectuera les tests de passage de Drupal6 à 7 sans aucune crainte !
60
61
--[[Utilisateur:Ismaeil|ismaeil]] 23 mai 2011 à 14:39 (CEST)
62
63
h2. Méthode alternative
64
65
http:// build2be.com/ content/ how-get-site-localhost
66
67
h3. Nettoyage
68
69
Il faut d'abord que D6 soit clean pour limiter les problèmes de migration:
70
71
# -DONE-Il faut disparaitre les derniers liens symboliques fr.truc
72
# -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]]
73
(--[[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 !)
74
# -DONE-Il faut voir le cas des rares sites qui ont un thème propre ou un module propre dans leur répertoire<br />
75
# ---- [État : Terminé]
76
77
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.
78
79
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.
80
 done [[Utilisateur:LiNux ^^=!|LiNux ^^=!]] 
81
82
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 (mdv) : je n'ai pas renommé le sous-thème intégré
83
84
h1. Réunions d'information
85
86
# Réduire au maximum la liste des projets incompatibles en en parlant aux webmasters http://ginfo.centrale-marseille.fr/wiki/index.php/Article_help_1_migration_6_7
87
# Dire aux wabmasters qu'on a l'intention de passer à Drupal 7 pour différents raisons
88
mail
89
 * Réu en amphi (faut savoir que celà à un impact direct sur leur site : le thème va changer de look !)
90
 * 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)
91
92
93
h1. Mise à jour
94
95
h2. Le café
96
97
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é.
98
99
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.
100
 
101
h2. Test des MAJ
102
103
# Sauvegarder l'environnement des tests précédemment créé !
104
# Effectuer une mise à jour vers Drupal7 en suivant les recommandations du UPGRADE.txt de DRUPAL7 (18 étapes) ou mieux: http://drupal.org/node/570162
105
# Noter tous les problèmes rencontrés et les solutions trouvés et si pas de solution, Trouver un contournement, l'essayer, le valider.
106
# 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!
107
# 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
108
109
h2. Enfin Drupal7 !
110
111
# Alerter la liste drupal, voire webmasters de l'heure planifiée des mises à jour 
112
# Mettre les sites sous le mode maintenance 15 minutes avant le massacre !
113
# 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 !
114
# Sauvegarde des fichiers du repertoire html de 'assos' et des bases de donnés Forum et webassos.
115
# Croiser les doigts (mais le décroiser pour bien effectuer les étapes suivantes)
116
# Effectuer la mise à jour
117
# S'assurer que les sites de l'étape "Test des MAJ" survivent tous sans problème.
118
# supprimer CHANGELOG.TXT de l'installation
119
120
h1. Tests massifs
121
122
Après avoir silloner les sites des associations et être sur qu'il y a pas de mort.
123
124
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.
125
126
h1. Réécriture des documentations
127
128
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
129
130
h1. Conclusions pour Drupal 8
131
132
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.
133
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 se passer parfois.
134
135
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 .
136
137
je met des idées au hazard :
138
* Quand une fonctionnalitée peut être faite à l'aide des modules du core, toujours privilégier cette méthode (ou feautures) sur un autre module car on est pas sur 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...
139
* ê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é. E
140
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 sur qu'il sera à jour avant même la nouvelle version !)
141
* 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 !
142
143
h1. Trucs divers
144
145
h2. Les modules tiers utilisés
146
147
En parcourant tous les sites, afficher les modules activés autres que ceux du noyau et écrire le résultat dans un fichier
148
149
<pre>
150
<code class="bash">
151
drushall pml |grep Enabled | grep -v Core >> modules.txt
152
</code>
153
</pre>
154
155
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]]
156
157
h2. Vérifier l'existance d'une version 7
158
159
--[[Utilisateur:Ismaeil|ismaeil]] 12 avril 2011 à 03:12 (CEST)
160
161
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 !
162
163
Voici la démarche que j'ai entreprise pour les modules (c'est la même pour les thèmes)
164
165
# Avoir la liste des modules tiers dans un fichier text
166
<pre>
167
ls sites/all/modules > modules.txt
168
</pre>
169
# 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. 
170
171
On commence par créer le script makehtml.sh
172
<pre>
173
<code class="bash">
174
#!/bin/bash
175
while read ligne
176
do
177
set $(echo $ligne)
178
project=$(eval echo $1)
179
#The file on which we write is in the next line
180
echo "<a href=\"http://drupal.org/project/$project\" target=\"_blank\">$project</a><br/>" >> sortie.html
181
#The file from which we read is in the next line
182
done < modules.txt
183
</code>
184
</pre>
185
186
Puis on lance le script dans le même répertoire que modules.txt
187
<pre>
188
sh makehtml.sh
189
</pre>
190
191
On aura un fichier sortie.html qu'on ouvre avec un navigateur web et on peut alors cliquer sur les liens !
192
193
h2. Script utilisation projet
194
195
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
196
197
Au début, nous utilision un script proche de drushall qui ressemblait à ça : 
198
199
<pre>
200
<code class="bash">
201
# si pas d'arguments :
202
if [ $# -lt 1 ]; then
203
  echo "usage: $0 <drush args>"
204
  exit 1
205
fi
206
207
cd [drupal_directory]/sites
208
209
for x in $(ls -1 | grep -v 'all' | grep -v other directories); do
210
  if [ -d $x -a ! -L $x ]; then
211
    cd $x;
212
	    echo $x
213
	    drush pml | grep $*
214
    cd -;
215
  fi
216
done
217
</code>
218
</pre>
219
220
Puis, nous avons créé un script plus efficace, nommé [[ Scripts_et_tâches_planifiées#usep | usep ]](used project).
221
222
Utilisation :
223
Pour avoir l'état d'utilisation du theème tarski par rapport à tous les sites de l'installation :
224
<pre>
225
usep tarski
226
</pre>
227
228
h2. Script changement thème
229
230
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
231
<code>drush vset admin_theme nom-de-mon-thème </code>
232
233
Ce script sera utilisé pour changer les thèmes des sites dont on peinera à trouver le webmaster pour passer à un thème D7 friendly !
234
235
h1. Après le D7
236
237
h2. retester la méthode création de sous site
238
239
La mettre à jour et update de la doc sur le wiki
240
241
h2. retester le script de Maj des modules
242
243
le mettre à jour et update de la doc sur le wiki