Projet

Général

Profil

Drush » Historique » Version 13

Julien Enselme, 10/06/2013 00:41
Mettre en place ses alias de script pour des sites distants : précisions importantes

1 4 Julien Enselme
{{toc}}
2 3 Julien Enselme
3 1 Julien Enselme
{{important(drush n'est pas installé sur le compte assos mais seulement sur le sas)}}
4 12 Julien Enselme
{{important(Si vous *modifiez les fichiers de configuration de drush*, pensez à vider les caches avec _drush cache-clear drush_)}}
5 2 Julien Enselme
6 9 Julien Enselme
h1. C'est quoi ?
7 1 Julien Enselme
8
Drush signifie _drupal shell_. C'est un utilitaire disponible sur nos installations afin d'administrer nos sites en ligne de commande.
9
10
Pour avoir la liste des commandes les plus simples, taper drush dans un terminal, ou consulter cette http://drupal.org/node/477684.
11
12
Pour effectuer une action, il faut au préalable se placer dans le dossier du site concerné, puis taper la commande drush.
13
14 9 Julien Enselme
h1. Quelques exemples simples
15 1 Julien Enselme
16
* activer le module ou le thème nommé projet : <code>drush en projet</code>
17
* désactiver le module ou le thème nommé projet <code>drush dis projet </code>
18
* lister les modules et les thèmes, leurs statuts (activé, désactivé, pas installé), et leurs versions <code>drush pml </code>
19
* désinstaller le module ou le thème nommé projet <code>drush pm-uninstall projet </code>
20
21
**Rappel :** désinstaller un projet = le désactiver + supprimer les tables de ce projet dans la base de données
22
23
* récupérer la valeur actuelle de la variable nommée ma_variable <code>drush vget ma_variable </code>
24
* modifier la valeur de _ma_variable_ en _nvelle_valeur_ <code>drush vset ma_variable nvelle_valeur </code>
25
26
NB : une variable est un champ de la table monsite_variables (dans la base de données).
27
On peut citer par exemple _theme_default_ le thème par défaut du site ou _admin_theme_ le thème de l'administration.
28
29
* vider tous les caches <code>drush cc all</code> 
30
31 9 Julien Enselme
h1. Gérer les utilisateurs
32 1 Julien Enselme
33 9 Julien Enselme
h2. Savoir qui administre un site
34 1 Julien Enselme
35
**À partir de drupal 7**
36
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 !)
37
<pre>
38
<code>
39
drush sqlq  "SELECT name, mail FROM nomdusite_users WHERE uid IN (SELECT uid FROM nomdusite_users_roles WHERE rid=3);"
40
</code>
41
</pre>
42
43 9 Julien Enselme
h2. Obtenir des informations sur un utilisateur
44 1 Julien Enselme
45
Retourne, pour un login donné, l'uid, l'adresse mail, les rôles et le statut.
46
<pre>
47
<code>drush uinf mon_utilisateur</code>
48
</pre>
49
50 9 Julien Enselme
h2. Changer le mot de passe d'un utilisateur
51 1 Julien Enselme
52
Uniquement si problème de passation au niveau de l'administration d'un site, et sur demande explicite de celui-ci.
53
<pre>
54
<code>
55
drush upwd mon_utilisateur --password="mon_nvo_mot-de-passe"
56
</code>
57
</pre>
58
59 9 Julien Enselme
h2. Changer les rôles d'un utilisateur
60 1 Julien Enselme
61
Idem, uniquement sur demande explicite de celui-ci !
62
63 5 Julien Enselme
* <code> drush urol "administrator" mon_utilisateur  </code> : donne le rôle "administrator" à l'utilisateur mon_utilisateur
64 1 Julien Enselme
* <code> drush urrol "administrator" mon_utilisateur  </code> : retire le rôle "administrator" à l'utilisateur mon_utilisateur
65
66 6 Julien Enselme
Pour devenir temporairement administrateur sur un site ou permettre à l’utilisateur d’id 1 de changer son mot de passe : <code>drush uli</code>. Cette commande retourne un lien à copier/coller dans son navigateur.
67
68 9 Julien Enselme
h1. Revenir sur une mise à jour qui a échoué
69 1 Julien Enselme
70
Pour revenir sur une mise à jour, il faut rétablir la base de données telle qu'elle était avant la mise à jour.
71
Cela suppose évidemment d'avoir fait une sauvegarde de la base de donnée avant :p
72
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 ^^
73
74
<pre>
75
<code>
76
drush sqlq < ~/sauvegardes/12345.sql
77
</code>
78
</pre>
79
80
C'est l'équivalent sql de :
81
<pre>
82
<code>
83
 mysql -h localhost -u root -p mabase < ~/sauvegardes/12345.sql 
84
</code>
85
</pre>
86
87
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
88
89
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.
90
91 9 Julien Enselme
h1. Les alias drush
92 1 Julien Enselme
93 9 Julien Enselme
h2. Les alias de sites
94 1 Julien Enselme
95 9 Julien Enselme
h3. Généralités
96 7 Julien Enselme
97
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 :
98 1 Julien Enselme
<pre>
99
<code>
100
drush @monsite status
101
</code>
102
</pre>
103
104 7 Julien Enselme
Pour connaître la liste de tous les alias et leur syntaxe exacte, lancer <code>drush sa</code> dans le dossier des sites.
105 1 Julien Enselme
106 7 Julien Enselme
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 drushall]] sans pour autant le remplacer…
107 1 Julien Enselme
108 9 Julien Enselme
h3. Mettre en place ses alias de script pour des sites locaux
109 8 Julien Enselme
110
@drush@ crée dans le répertoire de l’utilisateur un dossier @.drush@ qui contient les fichiers de configuration de _drush_. Pour activer les alias drush, créer dans ce dossier un fichier aliases.drushrc.php et placez-y les instructions suivantes (à adapter à votre configuration) :
111
<pre>
112
<code class="php">
113
<?php
114
115
$aliases['toto'] = array(
116
'uri' => 'toto.local',
117
'root' => '/var/www/local',
118
);
119
</code>
120
</pre>
121
122 1 Julien Enselme
Vous pouvez désormais appliquer une commande sur toto en utilisant <code>drush @toto CMD</code>.
123 8 Julien Enselme
124 9 Julien Enselme
h3. Mettre en place ses alias de script pour des sites distants
125 8 Julien Enselme
126 1 Julien Enselme
Marre de devoir vous connecter sur la machine où votre drupal est installé ? Alors les alias distants sont fait pour vous. Il vous permette depuis votre machine local d’administrer les sites installés sur une autre machine. Utiliser une clé ssh semble tout à fait adapter pour ne pas avoir à taper le mot de passe tout le temps. Pour cela, dans le fichier ~/.drush/aliases.drushrc.php entrer le code suivant (donné en exemple pour assos) :
127 8 Julien Enselme
128
<pre>
129
<code class="php">
130
$aliases['sitedistant'] = array(
131
'uri' => 'assos.centrale-marseille.fr',
132
'root' => '/users/guest/assos/htmltest',
133
'remote-user' => 'assos',
134
'remote-host' => 'sas1.centrale-marseille.fr',
135
);
136
</code>
137
</pre>
138
139 13 Julien Enselme
{{important(Il ne faut surtout pas mettre le chemin du dossier du site avec la clé _root_, sinon les commandes drush distantes ne fonctionnent pas (même si c’est tentant car facilite la synchronisation des fichiers))}}
140
141 9 Julien Enselme
h2. Les alias de scripts
142 1 Julien Enselme
143
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.
144
Voir ceci [[Scripts_et_taches_planifiees#Liste-des-alias-drush-à-disposition|la liste des alias drush créés par et pour le club drupal]].
145
146 10 Julien Enselme
h1. Les commandes pour dupliquer un site
147
148
Drush est tout à fait capable de répliquer un site distant sur votre machine ou un site local sur une machine distante. *Il faut avoir paramétré les alias drush avant*. Pour cela, il suffit d’utiliser les commandes suivantes :
149 11 Julien Enselme
* <code>rush -y rsync @${site}2:%files @${site}:%files</code> pour synchroniser les fichiers.
150
* <code>drush -y sql-sync  @${site}2 @${site}</code> pour dupliquer la base de données.
151 10 Julien Enselme
152 9 Julien Enselme
h1. Agir sur tous les sites d'un coup
153 1 Julien Enselme
154
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.