web-dev-qa-db-fra.com

Comment cibler des sites spécifiques avec Drush lors de l'utilisation de multisites?

J'ai une configuration Drupal Multisite. Elle contient deux sites, mais l'installation principale Drupal n'a pas de site).

Avec Drush, je peux utiliser @sites pour cibler tous les sites. Par exemple:

  • drush @sites -y cc all - Met à jour tous les multi-sites
  • drush @sites -y en jqmulti - Installer Jquery dans tous les multi-sites

Cependant, comme je n'ai aucun site installé dans le dossier principal, je reçois toujours un message d'erreur indiquant que le site principal est manquant. Est-il possible d'utiliser Drush pour mettre à jour uniquement les sous-multisites et ignorer le noyau?

Je sais que je peux exécuter Drush à partir du répertoire des sites des sous-sites, mais ce n'est pas très pratique lorsque je veux cibler tous les sites.

La raison pour laquelle j'utilise Multisites est que les deux sites partagent des thèmes et des connexions d'utilisateurs.

6
big_smile

Lorsque vous dites "site principal", voulez-vous dire le site en sites/default? Est-ce une option pour supprimer simplement le fichier settings.php à sites/default/settings.php?

Si vous souhaitez gérer vos alias dans un fichier d'alias, créez un fichier ~/.drush/mysite.aliases.drushrc.php:

$root = '/path/to/root';

$aliases['site1'] = array(
  'root' => $root,
  'uri' => 'site1.com',
);

$aliases['site2'] = array(
  'root' => $root,
  'uri' => 'site2.com',
);

Voir ce lien pour un exemple.

Ensuite, pour faire référence à un site:

drush @site1 status

  • ou -

drush @mysite.site1 status

Pour faire référence à tous les sites:

drush @mysite status

Peut-être que vous voulez obtenir plus de fantaisie que cela, cependant. Si vous avez plus d'alias dans votre fichier d'alias (par exemple pour les sites 'dev' et 'live', vous pouvez créer vos propres listes:

$aliases['dev'] = array(
  'site-list' => array('site1', 'site2'),
);

Alors:

drush @mysite.dev status

Si vous le souhaitez, vous pouvez également stocker votre fichier d'alias dans /path/to/root/drush ou /path/to/root/sites/all/drush, mais si vous faites cela, Drush ne pourra pas trouver votre fichier d'alias à moins que vous ne spécifiiez --root sur la ligne de commande ou que vous changiez votre répertoire de travail pour qu'il se trouve quelque part à l'intérieur de /path/to/root.

7
greg_1_anderson

Vous devez configurer un nouveau fichier d'alias Drush pour exécuter la commande sur le site distant. En règle générale, vous nommez le fichier comme <project_name>.drushrc.php.
Vous devez ensuite placer ce fichier dans le .drush répertoire dans le répertoire personnel de votre utilisateur connecté.

Voir ce lien pour un exemple de fichier d'alias Drush .

Après avoir configuré le fichier, effectuez une drush cc drush pour vider le cache Drush et lui permettre de récupérer les nouveaux fichiers d'alias (Remarque: cela peut ne pas être nécessaire dans certains environnements)

MISE À JOUR: Si vous hébergez votre site distant sur Acquia ou Pantheon, vous pouvez télécharger le fichier alias directement.

Pour télécharger le fichier d'alias pour

  1. Acquia, allez à https://accounts.acquia.com/account/<login_id>/security?site=insight et vous téléchargez l'alias à partir du lien: acquia
  2. Pour Panthéon, allez à https://dashboard.pantheon.io/users/<user_id>#sites/list et téléchargez le fichier alias pantheon
1
AjitS