Deployment von Webseiten mit SSH aber ohne Git

Kein Git auf der Kommandozeile

Fast jeder Webhoster bietet den Git-Befehl auf der Kommandozeile an. Das ist auch bei kleinen und günstigen Webhostingpaketen der Fall. Selbst ohne SSH-Zugang lässt sich so ein ordentlicher Deployment-Prozess entwickeln und vermeiden, ständig Dateien und Ordner per FTP kopieren zu müssen.

In vielen WordPress-Projekten arbeite ich beispielsweise mit dem WordPress-Plugin Revisr (siehe Update zu Git vs. WordPress: Deployment mit Revisr). Lokal entwickle ich das Projekt (inklusive WordPress-Updates) und stelle es in einem Git-Repository bereit. In WordPress kann ich dann mit Revisr mit einem Klick den Code aktualisieren.

Was aber, wenn Git nicht verfügbar ist?  Leider ist das bei dem großen Anbieter Strato der Fall. Egal ob "Hosting Starter", "Hosting Basic",  "Hosting Plus" oder "Hosting Pro", der Git-Befehl fehlt. Der Support von Strato verweist auf die Managed-Server-Pakete, die aber deutlich teurer sind.

Was aber Strato anbietet, ist ein SSH-Zugang. Das wiederum ist untypisch für günstige Hosting-Produkte und ein echter Vorteil. Denn so ist es doch noch möglich, einen Deployment-Prozess aufzusetzen.

Deployment mit Deployer

Deployer ist ein Deployment-Tool, das sich per SSH mit dem Server verbindet und dort den Code aktualisiert. Deployer richtet dabei eine bestimmte Verzeichnisstruktur ein, in der mehrere Releases vorgehalten werden und das Verzeichnis current als Verweis auf das aktuelle Release existiert (Soft link). Mit einem neuen Release wird zunächst ein neuer Release-Ordner mit dem neuesten Code angelegt. Nur wenn das Release erfolgreich ist (inklusive aller Prozessschritte), wird der current-Link umgesetzt. So ist sichergestellt, dass ein kaputtes Release nicht in den Livebetrieb gelangt.

Deployer-Verzeichnisstruktur auf dem Server

Deployer-Verzeichnisstruktur auf dem Server

Die Nutzung eines solchen Deployment-Tools ist gängige Praxis bei der Entwicklung von größeren Webapplikationen. In der beschriebenen Situation (kein Git) ist es aber auch für kleine Projekte hilfreich.

Einrichtung SSH-Keys

Damit du beim Aufruf von Deployer nicht jedes Mal ein Passwort eingeben musst, empfiehlt sich die Einrichtung deines SSH-Keys als Authorized Key auf dem Server.

Falls du noch keinen eigenen Schlüssel besitzt, findest du hier eine Anleitung. Anschließend befinden sich im Verzeichnis .ssh deines Home-Verzeichnis zwei Dateien: id_rsa und id_rsa.pub.

Erstelle auf dem Server ebenfalls ein .ssh-Verzeichnis im Home-Verzeichnis und darin eine Textdatei authorized_keys. Kopiere den Inhalt der Datei id_rsa.pub dort hinein.

Inhalt .ssh-Verzeichnis auf dem Server

Inhalt .ssh-Verzeichnis auf dem Server

Anschließend benötigst du von deinem Computer aus kein Passwort mehr, um dich per SSH zu verbinden, oder wenn du Deployer aufrufst.

Voraussetzungen und Installation

Deployer benötigt PHP 7. Es wird auf dem lokalen Rechner installiert, wahlweise manuell oder mit Composer. Hier geht es zur Installationsanleitung.

Auf dem Server muss nichts installiert werden. Deployer steuert vom lokalen Rechner aus den gesamten Prozess.

Deployment ohne Git

Standardmäßig möchte Deployer auf ein Git-Repository zugreifen und dort den Code abrufen. Dies geschieht im Task deploy:update_code. In einem Szenario, in dem Git nicht verfügbar ist, schlägt dieser Schritt fehl.

In meinem Projekt überschreibe ich den Task mit ein paar Zeilen eigenen Code (s.u.). Mit dem Befehl git archive erstelle ich ein Archiv meines Webprojekts als temporäre Datei. Git wird dabei lokal ausgeführt und ist nicht vom Server abhängig. Dieses Archiv lade ich nun auf dem Server in den tmp-Order des Deployer-Arbeitsverzeichnisses. Ich entpacke auf dem Server das Archiv als neues Release. Den Rest macht dann wieder Deployer.

 

bjoerne_com_bjoern_weinbrenner_softwareentwickler_icon_leistungen_02

Lust auf mehr? Als selbstständiger Softwareentwickler kann ich Sie in Ihren Projekten unterstützen. Melden Sie sich gerne bei mir.

2018-12-20T13:14:21+00:00 20.12.2018|Tags: , , , |0 Kommentare

Hinterlassen Sie einen Kommentar