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ß!