Scripts et taches planifiees » Historique » Version 2
Julien Enselme, 05/04/2013 19:16
Suppression catégorie (reste mediawiki)
1 | 1 | Julien Enselme | Afin de gagner du temps et d'éviter les erreurs humaines, des scripts ont été écrits tout au long du projet. Certains sont même exécutés automatiquement toutes les semaines. |
---|---|---|---|
2 | 1 | Julien Enselme | |
3 | 1 | Julien Enselme | {{toc}} |
4 | 1 | Julien Enselme | |
5 | 1 | Julien Enselme | h1. Les tâches planifiées |
6 | 1 | Julien Enselme | |
7 | 1 | Julien Enselme | Pour exécuter ces tâches régulièrement, on utilise le [http://fr.wikipedia.org/wiki/Crontab crontab]. Il s'agit d'un programme installé sur notre serveur. |
8 | 1 | Julien Enselme | Pour voir et modifier la liste des actions |
9 | 1 | Julien Enselme | # se connecter au serveur : ssh assos@sas1.centrale-marseille |
10 | 1 | Julien Enselme | # taper la commande crontab -l (pour voir le crontab) |
11 | 1 | Julien Enselme | # taper la commande crontab -e (pour modifier le crontab). /!\ ne pas effectuer cette opération avant de s'être renseigné sur [http://fr.wikipedia.org/wiki/Vi vi] (l'éditeur de texte utilisé qui n'est pas vraiment intuitif :p) et sur [http://fr.wikipedia.org/wiki/Crontab#Modification la syntaxe du crontab] ! |
12 | 1 | Julien Enselme | |
13 | 1 | Julien Enselme | Voici la liste des tâches effectuées régulièrement. |
14 | 1 | Julien Enselme | |
15 | 1 | Julien Enselme | h2. la mise à jour des projets |
16 | 1 | Julien Enselme | |
17 | 1 | Julien Enselme | <note> sur l'installation d6 uniquement pour le moment ; devra être fait pour l'installation d7 (date du jour : 25 avril 12) |
18 | 1 | Julien Enselme | <br>=> une fois par semaine </note> |
19 | 1 | Julien Enselme | |
20 | 1 | Julien Enselme | Voici les différentes étapes réalisées : |
21 | 1 | Julien Enselme | # Activer partout le module <code>update</code>. C'est lui qui gère la vérification des versions, l'envoi de notifications par mail ainsi que les mises à jour via drush, il est donc indispensable qu'il soit activé. |
22 | 1 | Julien Enselme | # Lancer le cron pour que les sites sachent s'il y a des majs à faire |
23 | 1 | Julien Enselme | # Supprimer le cache des sites pour réduire drastiquement la taille des bases de données sauvegardées. |
24 | 1 | Julien Enselme | # Exécuter le [[ Scripts_et_tâches_planifiées#dump.sh_and_co |script de sauvegarde des bases de données]] |
25 | 1 | Julien Enselme | # Vérifier les versions des projets et au besoin, mettre à jour leur code |
26 | 1 | Julien Enselme | # Exécuter la [[ Utilisation_de_Drupal_multi-site#Mise_.C3.A0_jour_de_la_base_de_donn.C3.A9es |mise à jour des bases de données]] |
27 | 1 | Julien Enselme | # Exécuter une nouvelle fois le cron |
28 | 1 | Julien Enselme | # Exécuter le [[ Scripts_et_tâches_planifiées#taille.sh |script de rapport sur la taille utilisée du disque]] et l'envoyer par mail au club Drupal |
29 | 1 | Julien Enselme | # Dater les logs et les sauvegarder au bon endroit |
30 | 1 | Julien Enselme | # Désactiver le module <code>update</code> (vu qu'il est réactivé avant la mise à jour et que celle-ci a lieu toutes les semaines, il y a peu d'intérêt à le garder activé le reste du temps) |
31 | 1 | Julien Enselme | |
32 | 1 | Julien Enselme | Les étapes 2 à 9 sont gérés par le script [[Scripts_et_tâches_planifiées#maj.sh | maj.sh]], le reste est directement écrit dans le crontab. |
33 | 1 | Julien Enselme | |
34 | 1 | Julien Enselme | h2. la mise à jour des traductions |
35 | 1 | Julien Enselme | |
36 | 1 | Julien Enselme | => sur les installations d6 et d7 |
37 | 1 | Julien Enselme | <br>=> une fois par jour |
38 | 1 | Julien Enselme | |
39 | 1 | Julien Enselme | Voici les étapes effectuées : |
40 | 1 | Julien Enselme | * Activer partout le module <code>l10n_update</code>. C'est lui qui gère la mise à jour des traductions |
41 | 1 | Julien Enselme | * Vérifier s'il y a des nouvelles chaînes traduites disponibles |
42 | 1 | Julien Enselme | * Ajouter les nouvelles traductions disponibles |
43 | 1 | Julien Enselme | * Désactiver le module <code>l10n_update</code> |
44 | 1 | Julien Enselme | |
45 | 1 | Julien Enselme | Pour drupal 6, les différentes instructions sont écrites directement dans le crontab. Pour drupal 7, on utilise [[ Scripts_et_tâches_planifiées#drush_maj_trad |l'alias drush perso <code> drush maj_trad</code>]] dans le crontab. |
46 | 1 | Julien Enselme | |
47 | 1 | Julien Enselme | h2. la réinitialisation des droits d'accès |
48 | 1 | Julien Enselme | |
49 | 1 | Julien Enselme | => sur les installations d6 et d7 |
50 | 1 | Julien Enselme | <br>=> toutes les semaines, après les D&D du club drupal |
51 | 1 | Julien Enselme | |
52 | 1 | Julien Enselme | Cette tâche utilise le script [[Scripts_et_tâches_planifiées#ch_mdp | ch_mdp ]] afin de rétablir les droits d'accès recommandés par drupal sur |
53 | 1 | Julien Enselme | * les dossiers des sites |
54 | 1 | Julien Enselme | * les settings.php des sites |
55 | 1 | Julien Enselme | |
56 | 1 | Julien Enselme | h2. la réinitialisation des variables dangeureuses |
57 | 1 | Julien Enselme | |
58 | 1 | Julien Enselme | => sur l'installation d7 principalement |
59 | 1 | Julien Enselme | <br>=> une fois par semaine |
60 | 1 | Julien Enselme | |
61 | 1 | Julien Enselme | Cette tâche consiste à réinitialiser certaines variables qui donnent des droits considérés comme trop permissifs donc dangereux aux administrateurs des sites. En voici la liste |
62 | 1 | Julien Enselme | |
63 | 1 | Julien Enselme | <pre> |
64 | 1 | Julien Enselme | <code class="bash"> |
65 | 1 | Julien Enselme | drushall_atest vset error_level 0 --yes |
66 | 1 | Julien Enselme | </code> |
67 | 1 | Julien Enselme | </pre> |
68 | 1 | Julien Enselme | |
69 | 1 | Julien Enselme | Cette commande permet de ne pas afficher les messages d'erreurs aux utilisateurs autre que les administrateurs. En effet, ils contiennent parfois des informations sensibles sur l'installation et ne doivent donc pas être divulgués à n'importe qui. |
70 | 1 | Julien Enselme | <pre> |
71 | 1 | Julien Enselme | <code class="php"> |
72 | 1 | Julien Enselme | drushall_atest php-eval variable_set\(\'allow_authorize_operations\',FALSE\)\; |
73 | 1 | Julien Enselme | </code> |
74 | 1 | Julien Enselme | </pre> |
75 | 1 | Julien Enselme | |
76 | 1 | Julien Enselme | Cette commande permet de ne pas autoriser les utilisateurs à installer et mettre à jour des modules via l'interface du site (fonctionnalité introduite dans drupal7). En effet, seul le club Drupal maintient les codes des projet, afin d'en garantir la pérennité. |
77 | 1 | Julien Enselme | |
78 | 1 | Julien Enselme | <pre> |
79 | 1 | Julien Enselme | <code class="php"> |
80 | 1 | Julien Enselme | drushall_atest vset --always-set reverse_proxy TRUE |
81 | 1 | Julien Enselme | drushall_atest vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]' |
82 | 1 | Julien Enselme | </code> |
83 | 1 | Julien Enselme | </pre> |
84 | 1 | Julien Enselme | Ces commandes permettent de déclarer à drupal les serveurs proxy du CRI afin d'éviter qu'il ne répertorie tous les visiteurs comme ayant l'adresse des sus-cités serveurs. Pour plus d'info, voir le mail de dgeo du 15 mai 2012. |
85 | 1 | Julien Enselme | |
86 | 1 | Julien Enselme | h3. Comment le lancer ? |
87 | 1 | Julien Enselme | |
88 | 1 | Julien Enselme | <br>N'importe où, taper <code>reinit_var.sh</code>. |
89 | 1 | Julien Enselme | |
90 | 1 | Julien Enselme | h2. la sauvegarde des bases de données |
91 | 1 | Julien Enselme | |
92 | 1 | Julien Enselme | => sur les installations d6 et d7 |
93 | 1 | Julien Enselme | <br>=> une fois par semaine |
94 | 1 | Julien Enselme | |
95 | 1 | Julien Enselme | On utilise les [[ Scripts_et_tâches_planifiées#Tout_sauvegarder | scripts de sauvegarde créés par le club Drupal]]. |
96 | 1 | Julien Enselme | |
97 | 1 | Julien Enselme | h2. la purge des sauvegardes de bdd |
98 | 1 | Julien Enselme | |
99 | 1 | Julien Enselme | => sur les installations d6 et d7 |
100 | 1 | Julien Enselme | <br>=> toutes les semaines |
101 | 1 | Julien Enselme | |
102 | 1 | Julien Enselme | Cette tâche utilise le script de [[Scripts_et_tâches_planifiées#purge_des_sauvegardes.sh | purge des sauvegardes ]] afin de libérer de l'espace disque en supprimant les sauvegardes de bdd les plus vieilles. |
103 | 1 | Julien Enselme | |
104 | 1 | Julien Enselme | h1. Liste des scripts à disposition |
105 | 1 | Julien Enselme | |
106 | 1 | Julien Enselme | Les scripts utilisés sont hébergés dans le répertoire bin du compte assos. |
107 | 1 | Julien Enselme | |
108 | 1 | Julien Enselme | h2. ch_mdp |
109 | 1 | Julien Enselme | |
110 | 1 | Julien Enselme | S'il est exécuté tel quel, sans être modifié, il se contente de rétablir les bons droits sur les dossiers des sites et sur les settings.php de nos deux installations. |
111 | 1 | Julien Enselme | |
112 | 1 | Julien Enselme | Il a cependant été initialement écrit pour permettre de prendre acte de la modification du mot de passe de la base de données rapidement dans tous les settings.php. |
113 | 1 | Julien Enselme | |
114 | 1 | Julien Enselme | Pour effectuer cette action, il faut rentrer l'ancien et le nouveau mot de passe à la ligne <code>sed 's/ancien_mdp/nvo_mdp/g' < $fichier.old > $fichier </code> puis lancer le script. |
115 | 1 | Julien Enselme | |
116 | 1 | Julien Enselme | Plus d'info sur comment ça marche en lisant [http://fr.wikipedia.org/wiki/Stream_Editor#Utilisation la documentation de la commande sed] et les commentaires laissés dans le code du script. |
117 | 1 | Julien Enselme | |
118 | 1 | Julien Enselme | h3. Comment le lancer ? |
119 | 1 | Julien Enselme | |
120 | 1 | Julien Enselme | Il suffit de taper "ch_mdp" n'importe où dans le compte assos. |
121 | 1 | Julien Enselme | |
122 | 1 | Julien Enselme | h3. À quoi ça ressemble ? |
123 | 1 | Julien Enselme | |
124 | 1 | Julien Enselme | <pre> |
125 | 1 | Julien Enselme | <code class="bash"> |
126 | 1 | Julien Enselme | cd [drupal directory]/sites |
127 | 1 | Julien Enselme | |
128 | 1 | Julien Enselme | for x in $(ls -1 | grep -v 'all'); do |
129 | 1 | Julien Enselme | <br>chmod +w $x |
130 | 1 | Julien Enselme | <br>cd $x; |
131 | 1 | Julien Enselme | <br>echo $x |
132 | 1 | Julien Enselme | <br>fichier="settings.php" |
133 | 1 | Julien Enselme | <br>chmod 600 $fichier |
134 | 1 | Julien Enselme | <br>mv $fichier $fichier.old |
135 | 1 | Julien Enselme | <br> #remplacer la première chaine après le / par l'ancien mot de passe, et la seconde chaine (après le deuxième /) par le nouveau mot de passe |
136 | 1 | Julien Enselme | <br>sed 's/ancien_mdp/nvo_mdp/g' < $fichier.old > $fichier |
137 | 1 | Julien Enselme | <br>chmod 400 $fichier |
138 | 1 | Julien Enselme | <br>rm $fichier.old |
139 | 1 | Julien Enselme | <br>cd .. |
140 | 1 | Julien Enselme | <br>chmod -w $x |
141 | 1 | Julien Enselme | <br>done |
142 | 1 | Julien Enselme | </code> |
143 | 1 | Julien Enselme | </pre> |
144 | 1 | Julien Enselme | |
145 | 1 | Julien Enselme | h2. dis_tiers.sh et en_tiers.sh |
146 | 1 | Julien Enselme | |
147 | 1 | Julien Enselme | Créé en juillet 2011 dans le cadre de [[ De_Drupal6_vers_Drupal7 | la migration de d6 à d7]], ces scripts permettent respectivement de désactiver et réactiver tous les modules tiers (c'est-à-dire les modules qui ne font pas partie du noyau / core de drupal, ceux qui sont installé dans sites/all/modules). |
148 | 1 | Julien Enselme | |
149 | 1 | Julien Enselme | En effet, il s'agit de deux étapes indipensables pour la migration d'un site. |
150 | 1 | Julien Enselme | |
151 | 1 | Julien Enselme | |
152 | 1 | Julien Enselme | h3. Comment les lancer ? |
153 | 1 | Julien Enselme | |
154 | 1 | Julien Enselme | Il suffit de taper "dis_tiers.sh" ou "en_tiers.sh" dans le dossier du site en question. |
155 | 1 | Julien Enselme | |
156 | 1 | Julien Enselme | h3. À quoi ça ressemble ? |
157 | 1 | Julien Enselme | |
158 | 1 | Julien Enselme | <pre> |
159 | 1 | Julien Enselme | <code class="bash"> |
160 | 1 | Julien Enselme | ##dis_tiers.sh |
161 | 1 | Julien Enselme | #écrire le nom des modules non core dans un fichier |
162 | 1 | Julien Enselme | drush pml |grep -v Core* | grep Module | grep Enabled > fichier.temp |
163 | 1 | Julien Enselme | sed -e 's/\(.*(\)\(.*\)\().*\)/\2/' fichier.temp > modules_tiers.txt |
164 | 1 | Julien Enselme | #désactiver ces modules |
165 | 1 | Julien Enselme | for line in $(cat modules_tiers.txt); do drush dis -y "$line" ; done |
166 | 1 | Julien Enselme | #effacer les fichiers créés |
167 | 1 | Julien Enselme | rm fichier.temp |
168 | 1 | Julien Enselme | |
169 | 1 | Julien Enselme | ##en_tiers.sh |
170 | 1 | Julien Enselme | #activer ces modules du fichier texte |
171 | 1 | Julien Enselme | for line in $(cat modules_tiers.txt); do drush en -y "$line" ; done |
172 | 1 | Julien Enselme | </code> |
173 | 1 | Julien Enselme | </pre> |
174 | 1 | Julien Enselme | |
175 | 1 | Julien Enselme | NB : dis_tiers.sh crée un fichier texte contenant la liste des modules tiers qui étaient activés sur le site. Il faut donc : |
176 | 1 | Julien Enselme | * avoir des droits d'écriture sur le dossier du site pour l'exécuter |
177 | 1 | Julien Enselme | * penser à supprimer ce fichier et à remettre les droits correctement (par exemple en lançant le script [[Scripts_et_tâches_planifiées#ch_mdp | ch_mdp ]]) après |
178 | 1 | Julien Enselme | |
179 | 1 | Julien Enselme | h2. drushall and co |
180 | 1 | Julien Enselme | |
181 | 1 | Julien Enselme | Pour administrer tous les sites du multi-site en une seule fois, nous avons créé un script à partir de drush. |
182 | 1 | Julien Enselme | Il s'utilise comme drush, mais effectue la commande drush tapée sur tous les sites de l'installation un par un. |
183 | 1 | Julien Enselme | |
184 | 1 | Julien Enselme | h3. Comment on le lance ? |
185 | 1 | Julien Enselme | |
186 | 1 | Julien Enselme | Sur l'installation d6, on lance <code>drushall</code> n'importe où. |
187 | 1 | Julien Enselme | |
188 | 1 | Julien Enselme | Sur l'installation d7, on lance <code>drushall_atest</code> n'importe où. |
189 | 1 | Julien Enselme | |
190 | 1 | Julien Enselme | h3. À quoi ça ressemble ? |
191 | 1 | Julien Enselme | |
192 | 1 | Julien Enselme | <pre> |
193 | 1 | Julien Enselme | <code class="bash"> |
194 | 1 | Julien Enselme | #~/bin/sh |
195 | 1 | Julien Enselme | # si pas d'arguments : |
196 | 1 | Julien Enselme | if [ $# -lt 1 ]; then |
197 | 1 | Julien Enselme | echo "usage: $0 <drush args>" |
198 | 1 | Julien Enselme | exit 1 |
199 | 1 | Julien Enselme | fi |
200 | 1 | Julien Enselme | |
201 | 1 | Julien Enselme | cd [drupal directory]/sites |
202 | 1 | Julien Enselme | |
203 | 1 | Julien Enselme | for x in $(ls -1 | grep -v 'all'); do |
204 | 1 | Julien Enselme | if [ -d $x -a ! -L $x ]; then |
205 | 1 | Julien Enselme | cd $x; |
206 | 1 | Julien Enselme | echo $x |
207 | 1 | Julien Enselme | drush $* |
208 | 1 | Julien Enselme | cd -; |
209 | 1 | Julien Enselme | fi |
210 | 1 | Julien Enselme | done |
211 | 1 | Julien Enselme | </code> |
212 | 1 | Julien Enselme | </pre> |
213 | 1 | Julien Enselme | |
214 | 1 | Julien Enselme | h2. drushcronone |
215 | 1 | Julien Enselme | |
216 | 1 | Julien Enselme | h3. Histoire |
217 | 1 | Julien Enselme | |
218 | 1 | Julien Enselme | Ce script a été introduit pour la version 6 du projet essentiellement pour améliorer les performances : au lieu de faire un wget sur le cron.php d'un site, valait mieux exécuter le script 'en interne'. |
219 | 1 | Julien Enselme | |
220 | 1 | Julien Enselme | h3. Besoin |
221 | 1 | Julien Enselme | |
222 | 1 | Julien Enselme | La version 7 du projet en a besoin plus que jamais ! puisque le cron.php n'est plus 'wget'able sans une chaîne de codes à ajouter à l'url publique, sinon il faut avoir les droits nécessaires. |
223 | 1 | Julien Enselme | |
224 | 1 | Julien Enselme | h3. Usage |
225 | 1 | Julien Enselme | |
226 | 1 | Julien Enselme | Donc pour exécuter le cron pour un seul site, il suffit de donner le nom du répertoire. |
227 | 1 | Julien Enselme | Exemple :<code>drushcronone assos.centrale-marseille.fr.cac13</code> |
228 | 1 | Julien Enselme | |
229 | 1 | Julien Enselme | Q : Où est ce que ce script est le plus utilisé ? |
230 | 1 | Julien Enselme | |
231 | 1 | Julien Enselme | R : Dans les tâches planifiés (crontab) bien sûr ! |
232 | 1 | Julien Enselme | |
233 | 1 | Julien Enselme | h2. dump.sh and co |
234 | 1 | Julien Enselme | |
235 | 1 | Julien Enselme | h3. Sauvegarder uniquement les tables d'un site |
236 | 1 | Julien Enselme | |
237 | 1 | Julien Enselme | On a créé des scripts qui permettent de sauvegarder uniquement les tables associés à un site (et non toute la base). |
238 | 1 | Julien Enselme | Ils se lancent n'importe où (mais attention, la sauvegarde est effectuée là où il est lancé, donc à ne pas lancer dans dossier accessible par n'importe qui !) en tapant <code>dump_site nom_de_site</code> (d6) ou <code>dump_site_atest nom_du_site</code> (d7). |
239 | 1 | Julien Enselme | Le nom du site à fournir est le préfixe utilisé dans la base de données.<br> |
240 | 1 | Julien Enselme | Ils ressemblent à : |
241 | 1 | Julien Enselme | <pre> |
242 | 1 | Julien Enselme | <code class="bash"> |
243 | 1 | Julien Enselme | #récupération des tables du site dans le fichier liste_tables.temp |
244 | 1 | Julien Enselme | tables='_%' |
245 | 1 | Julien Enselme | liste="$1$tables" |
246 | 1 | Julien Enselme | |
247 | 1 | Julien Enselme | mysql -h serveur -u utilisateur --password=super_mot-de-passe -BNe "show tables like '"$liste"'" base_de_données | tr '\r\n' ' ' > liste_tables.temp |
248 | 1 | Julien Enselme | |
249 | 1 | Julien Enselme | #transformation de cette liste en une variable |
250 | 1 | Julien Enselme | var=$(cat liste_tables.temp) |
251 | 1 | Julien Enselme | |
252 | 1 | Julien Enselme | |
253 | 1 | Julien Enselme | #sauvegarde de toutes ces tables |
254 | 1 | Julien Enselme | suffixe="_dump.sql" |
255 | 1 | Julien Enselme | fichier="$1$suffixe" |
256 | 1 | Julien Enselme | |
257 | 1 | Julien Enselme | mysqldump base_de_données -h serveur -u utilisateur --password=super_mot-de-passe $var > $fichier |
258 | 1 | Julien Enselme | |
259 | 1 | Julien Enselme | #suppression du fichier temporaire utilisé |
260 | 1 | Julien Enselme | rm liste_tables.temp |
261 | 1 | Julien Enselme | </code> |
262 | 1 | Julien Enselme | </pre> |
263 | 1 | Julien Enselme | |
264 | 1 | Julien Enselme | h3. Tout sauvegarder |
265 | 1 | Julien Enselme | |
266 | 1 | Julien Enselme | Pour drupal 6, on a un script qui réalise la sauvegarde de toute la base en une seule fois : <code> dump.sh</code>. Il _ressemble_ à ça : |
267 | 1 | Julien Enselme | <pre> |
268 | 1 | Julien Enselme | <code class="bash"> |
269 | 1 | Julien Enselme | mysqldump nom_de_la_base -h serveur -u utilisateur --password=super_mot_de_passe_trop_bien > ~/chemin_vers_la/sauvegarde.dump.sql |
270 | 1 | Julien Enselme | </code> |
271 | 1 | Julien Enselme | </pre> |
272 | 1 | Julien Enselme | |
273 | 1 | Julien Enselme | Pour drupal 7, on a un script plus complet : <code>dump_site_atest_all</code>. |
274 | 1 | Julien Enselme | |
275 | 1 | Julien Enselme | On utilise d'abord le script de sauvegarde individuelle des sites (<code> dump_site_atest</code>) appliqué sur tous les sites un par un. Puis on effectue également une sauvegarde complète au cas où ^^ |
276 | 1 | Julien Enselme | |
277 | 1 | Julien Enselme | Ils se lancent n'importe où. |
278 | 1 | Julien Enselme | |
279 | 1 | Julien Enselme | h2. maj.sh |
280 | 1 | Julien Enselme | |
281 | 1 | Julien Enselme | Ce script est principalement constitué d'une suite de commandes drush et d'appels à d'autres scripts du projet. |
282 | 1 | Julien Enselme | |
283 | 1 | Julien Enselme | Plus d'info sur les étapes précises dans les commentaires du script lui-même et dans le [[Scripts_et_tâches_planifiées#la_mise_.C3.A0_jour_des_projets | paragraphe suivant]]. |
284 | 1 | Julien Enselme | |
285 | 1 | Julien Enselme | h3. Comment le lancer ? |
286 | 1 | Julien Enselme | |
287 | 1 | Julien Enselme | <code>maj.sh</code> ou <code>maj_d7.sh</code>, n'importe où. |
288 | 1 | Julien Enselme | |
289 | 1 | Julien Enselme | NB : il faut que le module <code>update</code> soit activé sur tous les sites de l'installation pour que ce script fonctionne. |
290 | 1 | Julien Enselme | |
291 | 1 | Julien Enselme | h2. usep |
292 | 1 | Julien Enselme | |
293 | 1 | Julien Enselme | Ce script a été créé dans le cadre de la [[De_Drupal6_vers_Drupal7 | migration de drupal 6 à drupal 7]] mais peut être utilisé pour des tas de choses : il permet de savoir quels sont les sites qui utilisent (c'est-à-dire qui ont activé) un projet donné. |
294 | 1 | Julien Enselme | <br>Pour le moment, il n'est fonctionnel que pour drupal 6, mais peut être adapté sans mal à drupal 7. |
295 | 1 | Julien Enselme | |
296 | 1 | Julien Enselme | h3. Comment le lancer ? |
297 | 1 | Julien Enselme | |
298 | 1 | Julien Enselme | Taper <code>usep projet</code> dans n'importe quel dossier de site de l'installation drupal 6. |
299 | 1 | Julien Enselme | |
300 | 1 | Julien Enselme | h3. À quoi ça ressemble ? |
301 | 1 | Julien Enselme | |
302 | 1 | Julien Enselme | (quelques commentaires sont également dispo directement dans le script pour mieux comprendre son fonctionnement) |
303 | 1 | Julien Enselme | <pre> |
304 | 1 | Julien Enselme | <code class="bash"> |
305 | 1 | Julien Enselme | #si pas d'argument donnés : |
306 | 1 | Julien Enselme | if [ $# -lt 1 ]; then |
307 | 1 | Julien Enselme | echo "usage: $0 <drush args>" |
308 | 1 | Julien Enselme | exit 1 |
309 | 1 | Julien Enselme | fi |
310 | 1 | Julien Enselme | |
311 | 1 | Julien Enselme | |
312 | 1 | Julien Enselme | cd [drupal_directory]/sites |
313 | 1 | Julien Enselme | |
314 | 1 | Julien Enselme | |
315 | 1 | Julien Enselme | for x in $(ls -1 | grep -v 'all' | grep -v file-*); do |
316 | 1 | Julien Enselme | if [ -d $x -a ! -L $x ]; then |
317 | 1 | Julien Enselme | cd $x; |
318 | 1 | Julien Enselme | if [ 1 = `drush pml --no-core --status=enabled | grep $1 | wc -l` ]; then |
319 | 1 | Julien Enselme | echo $x; |
320 | 1 | Julien Enselme | fi |
321 | 1 | Julien Enselme | cd -; |
322 | 1 | Julien Enselme | fi |
323 | 1 | Julien Enselme | done |
324 | 1 | Julien Enselme | </code> |
325 | 1 | Julien Enselme | </pre> |
326 | 1 | Julien Enselme | |
327 | 1 | Julien Enselme | h2. taille.sh |
328 | 1 | Julien Enselme | |
329 | 1 | Julien Enselme | Ce script utilise la commande <code>du -hcs</code> pour retourner l'espace disque utilisé sur le compte assos, ainsi que sa répartition dans les différents répertoires des sites). |
330 | 1 | Julien Enselme | |
331 | 1 | Julien Enselme | Ce script est notamment utilisé à la fin du script de mise à jour de projet ; son résultat est envoyé par mail au club drupal pour vérification. |
332 | 1 | Julien Enselme | |
333 | 1 | Julien Enselme | h2. init_var.sh |
334 | 1 | Julien Enselme | |
335 | 1 | Julien Enselme | Ce script permet d'initialiser des configurations et variables dangereuses, pour l'installation drupal 7. Il faut le lancer après chaque installation de sous-site. |
336 | 1 | Julien Enselme | |
337 | 1 | Julien Enselme | h3. Comment le lancer ? |
338 | 1 | Julien Enselme | |
339 | 1 | Julien Enselme | Taper <code>init_var.sh</code> (ou <code>drush init</code>) dans le dossier du site. |
340 | 1 | Julien Enselme | |
341 | 1 | Julien Enselme | h3. À quoi ça ressemble ? |
342 | 1 | Julien Enselme | |
343 | 1 | Julien Enselme | <pre> |
344 | 1 | Julien Enselme | <code class="bash"> |
345 | 1 | Julien Enselme | drush vset error_level 0 --yes |
346 | 1 | Julien Enselme | </code> |
347 | 1 | Julien Enselme | </pre> |
348 | 1 | Julien Enselme | |
349 | 1 | Julien Enselme | Cette commande permet de ne pas afficher les messages d'erreurs aux utilisateurs autre que les administrateurs. En effet, ils contiennent parfois des informations sensibles sur l'installation et ne doivent donc pas être divulguées à n'importe qui. |
350 | 1 | Julien Enselme | |
351 | 1 | Julien Enselme | <pre> |
352 | 1 | Julien Enselme | <code class="php"> |
353 | 1 | Julien Enselme | drush php-eval variable_set\(\'allow_authorize_operations\',FALSE\)\; |
354 | 1 | Julien Enselme | </code> |
355 | 1 | Julien Enselme | </pre> |
356 | 1 | Julien Enselme | |
357 | 1 | Julien Enselme | Cette commande permet de ne pas autoriser les utilisateurs à installer et mettre à jour des modules via l'interface du site (fonctionnalité introduite dans drupal7). En effet, seul le club Drupal maintient les codes des projet, afin d'en garantir la pérennité. |
358 | 1 | Julien Enselme | |
359 | 1 | Julien Enselme | <pre> |
360 | 1 | Julien Enselme | <code class="bash"> |
361 | 1 | Julien Enselme | drush vset --always-set reverse_proxy TRUE |
362 | 1 | Julien Enselme | drush vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]' |
363 | 1 | Julien Enselme | </code> |
364 | 1 | Julien Enselme | </pre> |
365 | 1 | Julien Enselme | |
366 | 1 | Julien Enselme | Ces commandes permettent de déclarer à drupal les serveurs proxy du CRI afin d'éviter qu'il ne répertorie tous les visiteurs comme ayant l'adresse des sus-cités serveurs. Pour plus d'info, voir le mail de dgeo du 15 mai 2012. |
367 | 1 | Julien Enselme | <pre> |
368 | 1 | Julien Enselme | <code class = "bash"> |
369 | 1 | Julien Enselme | drush ev "variable_set('update_notify_emails', array('coucouuu@example.com'));" |
370 | 1 | Julien Enselme | </code> |
371 | 1 | Julien Enselme | </pre> |
372 | 1 | Julien Enselme | |
373 | 1 | Julien Enselme | Cette commande permet de modifier l'adresse de la personne qui recevra des notifications lorsqu'une nouvelle mise à jour (projet ou noyau drupal) est disponible (NB : c'est le module (du noyau) "update" qui gère ces envois, s'il est désactivé, aucune vérification des versions n'est effectuée) |
374 | 1 | Julien Enselme | Pour ne pas déranger les webmasters avec ceci, il faut mettre l'adresse du club drupal. |
375 | 1 | Julien Enselme | |
376 | 1 | Julien Enselme | h2. reinit_var.sh |
377 | 1 | Julien Enselme | |
378 | 1 | Julien Enselme | Ce script est utilisé pour réinitialiser des configurations et variables dangereuses sur tous les sites. |
379 | 1 | Julien Enselme | <br>Des informations détaillées sont disponibles dans [[Scripts_et_tâches_planifiées#la_r.C3.A9initialisation_des_variables_dangeureuses | ce paragraphe]]. |
380 | 1 | Julien Enselme | |
381 | 1 | Julien Enselme | h3. Comment le lancer ? |
382 | 1 | Julien Enselme | |
383 | 1 | Julien Enselme | Taper <code>reinit_var.sh</code> n'importe où. |
384 | 1 | Julien Enselme | |
385 | 1 | Julien Enselme | h2. purge_des_sauvegardes.sh |
386 | 1 | Julien Enselme | |
387 | 1 | Julien Enselme | Ce script permet de supprimer les vieilles sauvegardes de base de données, afin de libérer de l'espace disque. |
388 | 1 | Julien Enselme | |
389 | 1 | Julien Enselme | Le script nettoie les sauvegardes de sites individuels et les sauvegardes des bases de données complètes d6 et d7. |
390 | 1 | Julien Enselme | |
391 | 1 | Julien Enselme | |
392 | 1 | Julien Enselme | h3. Comment le lancer ? |
393 | 1 | Julien Enselme | |
394 | 1 | Julien Enselme | Il suffit de taper "purge_des_sauvegardes.sh" n'importe où dans le compte assos. |
395 | 1 | Julien Enselme | |
396 | 1 | Julien Enselme | h3. À quoi ça ressemble ? |
397 | 1 | Julien Enselme | |
398 | 1 | Julien Enselme | <pre> |
399 | 1 | Julien Enselme | <code class="bash"> |
400 | 1 | Julien Enselme | cd [dump directory] |
401 | 1 | Julien Enselme | |
402 | 1 | Julien Enselme | if [ $(ls -l | wc -l) -gt YY ] ; then # s'il y a plus de YY fichiers alors |
403 | 1 | Julien Enselme | |
404 | 1 | Julien Enselme | ls -tr | head -XX | xargs rm; #supprime les XX fichiers les plus vieux |
405 | 1 | Julien Enselme | |
406 | 1 | Julien Enselme | else # sinon, alerte |
407 | 1 | Julien Enselme | |
408 | 1 | Julien Enselme | echo "mon message d'erreur" | mail -s "[dump assos] mon message d'erreur" assos@centrale-marseille.fr ; |
409 | 1 | Julien Enselme | |
410 | 1 | Julien Enselme | fi |
411 | 1 | Julien Enselme | </code> |
412 | 1 | Julien Enselme | </pre> |
413 | 1 | Julien Enselme | |
414 | 1 | Julien Enselme | |
415 | 1 | Julien Enselme | NB : Ce script supprime les x sauvegardes les plus vieilles de chaque catégorie (sites d7, tout d6, tout d7), sans aucune notion de temps. Cela implique que si des sauvegardes ont été faites manuellement, des sauvegardes automatiques plus vieilles seront supprimées (alors qu'elles ne sont pas nécessairement périmées !). |
416 | 1 | Julien Enselme | |
417 | 1 | Julien Enselme | h1. Liste des alias drush à disposition |
418 | 1 | Julien Enselme | |
419 | 1 | Julien Enselme | Les alias drush sont hébergés dans le fichier drushrc.php du .drush du compte assos. |
420 | 1 | Julien Enselme | |
421 | 1 | Julien Enselme | h2. drush init |
422 | 1 | Julien Enselme | |
423 | 1 | Julien Enselme | h3. À quoi ça sert ? |
424 | 1 | Julien Enselme | |
425 | 1 | Julien Enselme | Ce script initialise les variables dangereuses, en faisant appel au scrit [[Scripts_et_tâches_planifiées#init_var.sh | init_var.sh]]. Les deux peuvent s'utiliser indifféremment. |
426 | 1 | Julien Enselme | |
427 | 1 | Julien Enselme | h3. Comment l'utiliser ? |
428 | 1 | Julien Enselme | |
429 | 1 | Julien Enselme | Dans le dossier d'un site (drupal 7 uniquement), taper <code>drush init</code> (ou <code>init_var.sh</code>). |
430 | 1 | Julien Enselme | |
431 | 1 | Julien Enselme | Pour initialiser les variables de tous les sites (drupal 7 uniquement), dans le dossier sites, taper <code>drushall_atest init</code> |
432 | 1 | Julien Enselme | |
433 | 1 | Julien Enselme | h2. drush maj_trad |
434 | 1 | Julien Enselme | |
435 | 1 | Julien Enselme | h3. À quoi ça sert ? |
436 | 1 | Julien Enselme | |
437 | 1 | Julien Enselme | Ce script met à jour les traductions, en suivant [[ Scripts_et_tâches_planifiées#la_mise_.C3.A0_jour_des_traductions| la procédure décrite ici]]. |
438 | 1 | Julien Enselme | |
439 | 1 | Julien Enselme | h3. Comment l'utiliser ? |
440 | 1 | Julien Enselme | |
441 | 1 | Julien Enselme | Dans le dossier d'un site (drupal 6 ou 7), taper <code>drush maj_trad</code>. |
442 | 1 | Julien Enselme | |
443 | 2 | Julien Enselme | Pour mettre à jour les traductions de tous les sites (drupal 7 ou 6), dans le dossier sites, taper <code>drushall maj_trad</code> (ou <code>drushall_atest maj_trad</code> selon le cas). |