Module updaten via Shell auf Windows
Obwohl es den Anschein hat, dass die meisten Drupal-Nutzer schon mit einem Linuxrechner in der Wiege lagen, soll es angeblich doch noch ein paar wenige Menschen geben, die auf einem Windowsrechner arbeiten.
Für diese ist dieses kleine HowTo.
Es mag auch noch viel ausgetüfteltere Wege geben, um das Updaten von Drupal zu gestalten, aber für mich hat sich das folgende Vorgehen bewährt. Es hat mich zwar viel Zeit und Mühe gekostet soweit zu kommen, aber es gibt bestimmt "perfektere" Lösungen.
Was man braucht:
- Einen Webspace mit Shell/(SSH)-zugriff. (Wessen Webspace dies nicht hat braucht garnicht erst weiterlesen)
- putty.exe: Putty ist ein kostenlosen Konsolenprogramm für Windows
Was man haben sollte:
backup-and-migrate-Modul: Diese Modul sichert einem schnell mal die Datenbank (unverzichtbar beim Rumhantieren mit Modulen)
Worum es geht:
Drupal macht nur das was man will, wenn man eine Vielzahl an Modulen installiert. Da diese Module eine evolutionäre Entwicklung durchlaufen, gibt es, abhängig von der Aktivität der Entwickler, mehr oder weniger Updates, von denen wiederum einige zwingend notwenig für das Funktionieren anderer Module sind.
So kann es sein, dass wöchtentlich und manchmal täglich Updatebenachrichtigungen angezeigt werden.
Die "Primitivlösung" zum Updaten ist, die Dateien herunterzuladen, zu entpacken und per FTP auf den Server zu schicken. Bei vielen Modulen und welchen mit vielen Dateien kann dies ein ziemlicher Zeitfresser werden.
Beim Updaten per Shell spart man sich den Schritt die Dateien lokal zu speicher und zu entpacken, sondern macht dies direkt per Konsole auf dem Server.
- Man erhält eine Updatebenachrichtigung. Auf .../admin/reports/updates sieht man die Liste der Module und die Downloadlinks.
- Einloggen als Administrator (User 1)
- Man öffne einen neuen Tab im Browser und gehe zur Einstellungen->Wartungsarbeiten (Site Maintenance) und stelle die Seite dort auf "Offline" damit niemand während den Updates von Aussen was durcheinander bringt
- Man gehe schon mal vorsorglich auf .../update.php
Auf dem Rechner wird jetzt Putty gestartet.
Nach der Eingabe der Serveradresse erscheint die Konsole und möchte die Zugangsdaten (Benutzer und Passwort für den Account). Hat das geklappt sieht man nun seinen Server.
Abhängig vom Hoster sitzt man jetzt in irgendeinem Wurzelverzeichnis.
Um zu den Modulen zu gelangen, muss man wissen wie das Verzeichnis für die Webseiten heisst: www, oder htdocs oder ...
Wenn man Glück hat sitzt man schon beim Start in diesem Verzeichnis. Über ein FTP-Programm kann man sich im Zweifelsfall einen Überblick über die Pfade zur Drupalinstallation informieren.
Einen Überblick über das aktuelle Verzeichnis erhält man mit den Befehlen
dir
oder
ls
In meinem Beispiel muss ich zunächst in mein Webverzeichnis "www" wechseln.
Dies passiert mittels des Befehls
cd www
Mein Drupalverzeichnis in diesem Beispiel heisst der Einfachheit halber "drupal" und sitzt direkt in meinem www-Verzeichnis.
Die Module in Drupal befinden sich IMMER in drupal/sites/all/modules !
Das modules-Verzeichnis im obersten Drupalverzeichnis enthält nur die Kernmodule und sollte unangetastet bleiben.
Um also vom Konsolenstart zum Modulverzeichnis zu gelangen gebe ich
cd www/drupal/sites/all/modules
ein.
Dieser Pfad sollte einem in Fleisch und Blut übergehen!
Mit
dir
So, jetzt zum eigentlichen Thema:
Als Beispiel wird hier das CCK-Modul aktualisiert.
- Updates runterladen
- Updates entpacken
- update.php laufen lassen
Runterladen:
- Browser: Auf der immer geöffneten Seite mit den Updates klicke man mit der rechten Maustaste auf den "Download"-Link und kopiere die Link-Adresse
Im Zwischenspeicher liegt jetzt die Adresse des neuen CCK-Moduls:http://ftp.drupal.org/files/projects/cck-6.x-2.4.tar.gz
- Putty: In die Kommandozeile geben man ein
. Danach klicke man mit der rechten Maustaste auf das Konsolenfenster. Dies kopiert den Download-Link aus der Zwischenablage in die Konsole hinter das wget und führt den Befehl sofort aus:wget
wget http://ftp.drupal.org/files/projects/cck-6.x-2.4.tar.gz
Wenn man keine Fehler gemacht hat, rattert es jetzt in der Konsole, und das Modul-Archiv wird direkt vom Drupalserver in das eigene Modulverzeichnis geladen.
Entpacken:
Damit man das Modul jetzt auch wirklich aktualisieren kann, muss das komprimierte Archiv (erkennbar an dem .tar.gz
) entpackt werden. Beim entpacken wird der alte Modulordner komplett überschrieben.
Das Entpacken übernimmt der Befehl tar
.
Diesem müssen noch kryptische Parameter hinzugefügt werden:
tar -xzvf
Auch diese Befehlskette am besten im Stammhirn abspeichern.
Desweiteren benötigen wir jetzt den Namen der zu entpackenden Datei, die hinten dran kommt:
tar -xzvf cck-6.x-2.4.tar.gz
Ich habe schon Stunden damit verbracht vertrackten Modulnamen einzugeben z.b Schönheiten wie content_profile-6.x-1.0-beta4.tar.gz), um mich dabei immer wieder zu vertippen, was in einem Fehler resultiert, so dass man nochmal eingeben darf. Bis ich die tolle Erfindung des "*" enddeckte. Der Stern ist die Wildcard. Setzt man diesen Stern hinter oder vor eine Zeichenkette, dann sucht das System nach allen Dateien und Ordnern die diese Zeichenkette enthalten, egal ob vorher oder eben nacher noch andere Zeichen stehen.
Angewendet bedeutet das:
statt
tar -xzvf cck-6.x-2.4.tar.gz
komplett einzugeben reicht es auchtar -xzvf cck-*
cck-
beginnt. Sonst kommt es zum Konflikt. Deshalb sollten alle Modularchive nach dem Updaten auch gleich wieder gelöscht werden. (Dazu später)
Stimmt alles, rattern die Modulbestandteile durch das Konsolenfenster.
update.php:
Browser: Nach dem erfolgreichen Entpacken des neuen Modularchives sollt man immer das update.php laufen lassen. Nicht alle Module haben Einträge in der Datenbank die sich sich ändern könnten, aber da man das vorher nicht weiss gehört dieser Schritt eben zum MUSS.
Abhängig von der Anzahl der zu aktualisierenden Module wiederholen sich die Schritte, bis man durch ist.
Wenn man fertig mit dem ganzen Kram ist, Online-Modus nicht vergessen ;)
Aufräumen:
Bei einem Modul ist noch alles schön übersichtlich. Aber bei vielen und nach längerer Zeit sammeln sich nach dieser Methode diverse Modul-Archivdateien an, die dort eigentlich keinen Sinn mehr erfüllen.
Löschen per Kommandozeile kann ganz schön gefährlich sein wenn man nicht genau weiss wo man ist und was man tut. Also Vorsicht!
Wir befinden uns immer noch im Modulverzeichnis und wollen jetzt das CCK-Archiv wieder loswerden.
Löschen kann man mit dem Befehl
rm
Um also unser CCK-Archiv zu löschen, können wir jetzt
rm cck-6.x-2.4.tar.gz
eingeben.
Eilige können auch
rm cck-*
Und wer alle Archive auf einmal loswerden will, macht das dann so:
rm *.tar.gz
.tar.gz
am Ende enthalten.Nochmal
dir
zum Überblick, und dann sind wir auch schon wieder fertig.
Nochmal eine kleine Befehlsübersicht
cd
Verzeichnis wechseln
cd ..
Ein Verzeichnis im Ast zurück
cd /
katapultiert Dich in dein Server-Rootverzeichnis
wget
Lädt zusammen mit dem Pfad zum Download Dateien direkt auf den Server
tar -xzvf
Entpackt die tar.gz-Archive
rm
Löscht Dateien
- Anmelden oder Registrieren um Kommentare zu schreiben
drush
am 18.06.2009 - 14:15 Uhr
Sehr schöne Anleitung.
Jedoch ist dies alle simpler und fehlertoleranter mittels drush zu erledigen.
Nur für den Fall, dass man sich nicht mit den ganzen Befehlen herumärgern möchte und sich auch die Pfade nicht merken kann ...
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.