Projet

Général

Profil

Drush » Historique » Version 4

Julien Enselme, 31/05/2013 13:07
toc à gauche

1 4 Julien Enselme
{{toc}}
2 3 Julien Enselme
3 1 Julien Enselme
h1. Quelques techniques Drush
4
5 2 Julien Enselme
{{important(drush n'est pas installé sur le compte assos mais seulement sur le sas)}}
6 1 Julien Enselme
7
h2. C'est quoi ?
8
9
Drush signifie _drupal shell_. C'est un utilitaire disponible sur nos installations afin d'administrer nos sites en ligne de commande.
10
11
Pour avoir la liste des commandes les plus simples, taper drush dans un terminal, ou consulter cette http://drupal.org/node/477684.
12
13
Pour effectuer une action, il faut au préalable se placer dans le dossier du site concerné, puis taper la commande drush.
14
15
h2. Quelques exemples simples
16
17
* activer le module ou le thème nommé projet : <code>drush en projet</code>
18
* désactiver le module ou le thème nommé projet <code>drush dis projet </code>
19
* lister les modules et les thèmes, leurs statuts (activé, désactivé, pas installé), et leurs versions <code>drush pml </code>
20
* désinstaller le module ou le thème nommé projet <code>drush pm-uninstall projet </code>
21
22
**Rappel :** désinstaller un projet = le désactiver + supprimer les tables de ce projet dans la base de données
23
24
* récupérer la valeur actuelle de la variable nommée ma_variable <code>drush vget ma_variable </code>
25
* modifier la valeur de _ma_variable_ en _nvelle_valeur_ <code>drush vset ma_variable nvelle_valeur </code>
26
27
NB : une variable est un champ de la table monsite_variables (dans la base de données).
28
On peut citer par exemple _theme_default_ le thème par défaut du site ou _admin_theme_ le thème de l'administration.
29
30
* vider tous les caches <code>drush cc all</code> 
31
32
h2. Quelques commandes plus compliquées
33
34
h3. Gérer les utilisateurs
35
36
h4. Savoir qui administre un site
37
38
**À partir de drupal 7**
39
Cette commande permet de chercher dans la base de données les utilisateurs qui ont le _rid_ numéro 3 (qui correspond au rôle d'administrateur (toujours) dans D7 à moins d'aller exprès dans la bdd le changer !)
40
<pre>
41
<code>
42
drush sqlq  "SELECT name, mail FROM nomdusite_users WHERE uid IN (SELECT uid FROM nomdusite_users_roles WHERE rid=3);"
43
</code>
44
</pre>
45
46
h4. Obtenir des informations sur un utilisateur
47
48
Retourne, pour un login donné, l'uid, l'adresse mail, les rôles et le statut.
49
<pre>
50
<code>drush uinf mon_utilisateur</code>
51
</pre>
52
53
h4. Changer le mot de passe d'un utilisateur
54
55
Uniquement si problème de passation au niveau de l'administration d'un site, et sur demande explicite de celui-ci.
56
<pre>
57
<code>
58
drush upwd mon_utilisateur --password="mon_nvo_mot-de-passe"
59
</code>
60
</pre>
61
62
h4. Changer les rôles d'un utilisateur
63
64
Idem, uniquement sur demande explicite de celui-ci !
65
66
* <code> drush urol "administrator" mon_utilisateur  </code> : donne le rôle "administrator" à l'utilisateur mon_utilisateur<br>
67
* <code> drush urrol "administrator" mon_utilisateur  </code> : retire le rôle "administrator" à l'utilisateur mon_utilisateur
68
69
h3. Revenir sur une mise à jour qui a échoué
70
71
Pour revenir sur une mise à jour, il faut rétablir la base de données telle qu'elle était avant la mise à jour.
72
Cela suppose évidemment d'avoir fait une sauvegarde de la base de donnée avant :p
73
Dans le cas d'une grosse base de données comme la notre, phpmyadmin n'est pas une solution viable, il faut donc utiliser directement le sql en ligne de commande ou drush, bien entendu ^^
74
75
<pre>
76
<code>
77
drush sqlq < ~/sauvegardes/12345.sql
78
</code>
79
</pre>
80
81
C'est l'équivalent sql de :
82
<pre>
83
<code>
84
 mysql -h localhost -u root -p mabase < ~/sauvegardes/12345.sql 
85
</code>
86
</pre>
87
88
Explications : je me connecte au serveur _localhost_ avec le nom d'utilisateur _root_ et je veux écraser la base de donnée _mabase_ en y injectant le code sql généré par ma sauvegarde dans le fichier ~/sauvegardes/12345.sql
89
90
NB : Pour écraser une base, assurez-vous d'avoir des "CREATE TABLE IF NOT EXISTS" dans le fichier de sauvegardes et non seulement "CREATE TABLE". Dans ce dernier cas, il faut supprimer les tables de la bdd avant d'injecter les fichiers sql.
91
92
h2. Les alias drush
93
94
h3. Les alias de sites
95
96
Les alias de sites permettent de lancer une commande drush sans être dans le dossier du site, en précisant le nom du site via un alias de la manière suivante :
97
<pre>
98
<code>
99
drush @monsite status
100
</code>
101
</pre>
102
103
Pour connaitre la liste de tous les alias et leur syntaxe exacte, lancer <code>drush sa</code> dans le dossier des sites.
104
105
NB : l'alias <code>drush @sites</code> permet de lancer la commande drush sur chacun des sites, et effectue une action similaire à [[Scripts_et_taches_planifiees#drushall_and_co|notre script <code>drushall</code>]] sans pour autant le remplacer…
106
107
h3. Les alias de scripts
108
109
Il est également possible de créer des commandes drush personnalisées en utilisant les alias. On peut alors regrouper plusieurs actions souvent effectuées à la suite, voire même des scripts entiers, dans une commande drush.
110
Voir ceci [[Scripts_et_taches_planifiees#Liste-des-alias-drush-à-disposition|la liste des alias drush créés par et pour le club drupal]].
111
112
h2. Agir sur tous les sites d'un coup
113
114
Pour administrer tous les sites du multi-site en une seule fois, nous avons créé le script [[Scripts_et_taches_planifiees#drushall-and-co|drushall]]. L'alias <code>drush @sites</code> peut également être utilisés dans certains cas.