drupal

Drupal für Admins: Drush

Vor einem Monat wurde Drush in Version 2.0 freigegeben. Für alle, die sich jetzt fragen, was drush ist: ein erstklassiges Drupal-Werkzeug für die Kommandozeile.

Und da ich einige Server mit Drupal-Websites betreibe, war ich schnell dabei, mir das Werkzeug mal anzusehen. Ein kleiner Urlaub brachte mir auch genug Arbeit nach der Rückkehr und erstklassige Anwendungsfälle.

Ich habe drush unter /usr/local/share installiert und ein paar Shell-Aliase definiert:

alias drush=/usr/local/share/drush/drush
alias bdrush='drush -r ~/html/d6/ -l http://beispiel.de'
alias edrush='drush -r ~/html/d6/ -l http://example.org'
alias ddrush='drush -r ~/html/d6/ -l http://demo.example.org'
alias pdrush='drush -r ~/html/d6/ -l http://projects.example.org'

Drupal ist im Verzeichnis ~/html/d6/ installiert. Die Parameter -r und -l helfen drush, die gwünschte Website zu finden.

Und dann ist die Installation eines Modules so einfach wie:

drush dl support       # herunterladen nach sites/all/modules/
drush enable support   # Aktivieren des Moduls

Das Update einer Website wird mit

drush update

erledigt. Und an das Datenbankprompt bringt mich

drush sql cli

Den Rest findet Ihr selbst heraus. 😉

Nun wollte ich auf einfach Weise den Cron-Lauf für alle Websites zentralisieren. Und habe mir mit einem knappen Mehrzeiler geholfen:

#!/bin/bash
#
# Script to run the cron task on all installed Drupal sites.
#
# (C) 2009 Dirk Ruediger <dirk@niebegeg.net>
#
# This script depends on an Drupal installation, shell access to the
# server and drush installed.
#
;
# Where is the drush script located on my disk
#
DRUSH=/usr/local/bin/drush
;
# Any custom options for drush
#
OPTS=
;
# A listing of installation directories for drupal sites.
# On a confixx managed host Drupal is installed in an html/ subfolder in
# the client's home folder. The home folders are in /var/www.
#
ROOTS='/var/www/web*/html';
for s in $(find $ROOTS -name settings.php)
do
  DIR=$(echo $s | sed 's@/sites/.*@@')
  SITE=$(echo $s | sed 's@.*/sites/\([^/]*\)/.*@\1@')
  if [ $SITE == 'default' ]
  then
      $DRUSH $OPTS  -r $DIR cron
  else
      $DRUSH $OPTS -r $DIR -l http://$SITE cron
  fi
done

Das Skript such in allen htdocs/-Verzeichnissen aller User eines onfixx-Hosts nach Drupal-Installationen und führt drush cron für alle Websites einer Installation aus. So macht Administration Spaß!

Autor

Ich bin Softwareentwickler und derzeit vor allem mit PHP und Webanwendungen beschäftigt. Nach 10 Jahren mit Drupal habe ich mich gerade frisch in Laravel verliebt. Jenseits dessen verteilen sich meine digitalen Interessen zwischen Python, diversen Linuxen und macOS.