Drush Installation auf einem 1und1 Server

Drush Logo

Bei der Administration und Konfiguration einer Drupal Webseite ist die Nutzung des Kommandozeilen-Tools Drush eine große Hilfe. Folgende Schritte zeigen, wie die Installation von Drush auf einem Dedicated Server von 1und1 gelingt.

1. Über den Shell-Zugang per SSH einloggen und ins root-Verzeichnis wechseln:

cd ~

2. Für die Installation von Drush wird die Paketverwaltung für PHP Composer benötigt. Diese wird mit folgendem Befehl installiert (siehe 1und1 Community Seite):

curl -sS https://getcomposer.org/installer | /usr/bin/php5.5-cli

Nach der Installation von Composer befindet sich im root-Verzeichnis eine composer.phar Datei und ein .composer Ordner. 
Standardmäßig wird in der Shell von 1und1 zur Ausführung von PHP eine PHP4 Version verwendet. Daher wurde dem Befehl noch der Pfad zur aktuellen PHP Version für die Kommandozeile (CLI) übergeben. Es sollte nicht die CGI Version von PHP verwendet werden (siehe unten).
 

3. Damit für die Befehle php, composer und drush die richtige PHP Version und Pfade verwendet werden, muss für jeden Befehl ein alias angelegt werden. Dazu legen wir eine .bashrc Datei an:

touch .bashrc

Folgende Zeilen müssen in dieser Datei eingefügt werden:

alias php="/usr/bin/php5.5-cli"
alias composer="php ~/composer.phar"
export DRUSH_PHP="/usr/bin/5.5-cli"
alias drush="~/.composer/vendor/bin/drush"

4. Anschließend muss die Datei neu geladen werden, damit die Änderungen wirksam werden:

. .bashrc

5. Jetzt kann die aktuelle Drush Version oder eine beliebige andere Version installiert werden (siehe Drush Install Documentation):

composer global require drush/drush:dev-master

6. Im letzten Schritt muss noch die Datenbankeinstellung in der settings.php der entsprechenden Drupalinstallation angepasst werden. Dort wird auf einem 1und1 Server als Host häufig folgendes eingetragen:

'host' => 'localhost;unix_socket=/tmp/mysql5.sock',

Dieser Eintrag muss wie folgt geändert werden:

'host' => '127.0.0.1',
'unix_socket' => '/tmp/mysql5.sock',

Grund dafür ist, dass für eine MySQL Verbindung über die Kommandozeile von 1und1 ein unix_socket benötigt wird und Drush diesen Eintrag so finden kann.

 

Probleme mit PHP CGI

Wird für die Nutzung von Drush keine PHP CLI Version verwendet, kann es zu einigen Fehlermeldungen kommen:

<b>Notice</b>:  Use of undefined constant STDERR - assumed 'STDERR' in <b>/homepages/35/d157794216/htdocs/drush4/includes/drush.inc</b> on line <b>2310</b><br /> <br /> <b>Warning</b>:  fwrite(): supplied argument is not a valid stream resource in <b>/homepages/35/d157794216/htdocs/drush4/includes/drush.inc</b> on line <b>577</b> ...

Ursache dafür ist, dass die Konstanten für Ein- und Ausgabestreams $stdin, $stdout und $stderr nicht definiert sind. Ein Workaround für dieses Problem ist, dass in der Datei .composer/vendor/bin/drush/drush.php nach dem ersten <?php folgende Zeilen eingefügt werden (siehe drupal.org):

if (!defined('STDIN'))
{
define('STDIN', fopen('php://stdin', 'r'));
}
if (!defined('STDOUT'))
{
define('STDOUT', fopen('php://stdout', 'w'));
}
if (!defined('STDERR'))
{
define('STDERR', fopen('php://stderr', 'w'));
}