Movable Type auf STRATO Webhosting installieren

Die folgende Anleitung beschreibt die notwendigen Schritte, um Movable Type auf einem STRATO Webhosting-Paket zu installieren. Für die Installation wird der SSH-Zugang benutzt, der zum Leistungsumfang der Premium-Pakete und des PowerWeb S gehört.

Das Installationsarchiv wird auf dem Webspace abgelegt. Im Beispiel heisst es MT-3.35-en.tar.gz und liegt im Grundverzeichnis. Die Installation erfolgt weitestgehend nach Anleitung des Herstellers: Das Archiv wird in /cgi-bin entpackt, umbenannt und das Verzeichnis mt-static in den Homepagebereich verschoben.

example.com> ls -l ~/MT-3.35-en.tar.gz
-rw-r–r– 1 123456 customer 2479696 May 22 08:30 MT-3.35-en.tar.gz
example.com> cd ~/cgi-bin/
example.com> tar xzf ~/MT-3.35-en.tar.gz
example.com> mv MT-3.35-en mt
example.com> cd mt/
example.com> mv mt-static ~

Soll Movable Type auf einer intern umgeleiteten Domain (in einem Unterverzeichnis) installiert werden, sind die Pfade entsprechend anzupassen.

Da STRATO als traditionsbewusster Webhoster unter /usr/bin/perl das 1999 veröffentlichte Perl 5.004_05 zur Verfügung stellt, muss die Shebang-Zeile der CGI-Skripte angepasst werden. Bei STRATO ist eine aktuellere Perl-Version unter /usr/bin/perl58 zu finden.

example.com> bash
bash-3.00$ for i in *.cgi; do perl -i -pe ‘s#/usr/bin/perl#/usr/bin/perl58#’ $i; done

Wenn Movable Type in einem PowerWeb-Paket installiert werden soll, muss das Suffix der Skripte geändert werden. In den PowerWeb-Paketen können eigene CGI-Skripte nur mit der Dateiendung .pl ausgeführt werden.

bash-3.00$ for i in *.cgi; do mv “$i” “${i/.cgi}”.pl; done

Ich empfehle, die Konfigurationsdatei mt-config.cgi nicht selbst zu editieren, sondern vom Installationsskript erstellen zu lassen. Es wird automatisch ausgeführt, wenn Movable Type aufgerufen wird.

http://www.example.com/cgi-bin/mt/mt.cgi

Es wird der static web path URL abgefragt. Im Beispiel ist das http://example.com/mt-static. Im nächsten Schritt ist der Zugang zur Datenbank zu konfigurieren und der letzte Teil der Konfiguration fragt den Pfad zu sendmail ab. Bei STRATO ist es unter /usr/lib/sendmail zu finden.
Damit ist die Installation von Movable Type auf einem STRATO Webhosting-Paket abgeschlossen.

Debian-Pakete aus source packages bauen

Debian bietet sehr viele Programme fertig kompiliert als binary packages zur einfachen Installation über die distributionseigene Paketverwaltung an. Ist man mit den angebotenen Paketen aus irgend einem Grund nicht zufrieden, kann man sich die Vorteile vom Opensource-Prinzip zu Nutze machen und selbst den Compiler starten.

Wie ein Debian package aus einem source package gebaut wird, beschreibt die folgende Anleitung am Beispiel von FuzzyOCR. (Da FuzzyOCR ein Perl-Skript ist, muss es nicht kompiliert werden. Die Schritte auf dem Weg zum fertigen Paket ändern sich dadurch aber nicht und lassen sich auf Quellcode-Pakete in zu kompilierenden Sprachen übertragen, da der build-Prozess automatisch erfolgt.)

FuzzyOCR ist nicht in der stable Distribution (etch) enthalten. Die Sourcen aus anderen Distributionen (in diesem Fall testing) können gegen stable Pakete kompiliert und somit verfügbar gemacht werden. Um an das Quelltext-Paket zu kommen, muss in diesem Beispiel die sources.list erweitert werden.

# cat /etc/apt/sources.list
[...]
deb-src http://ftp.de.debian.org/debian/ testing main contrib non-free

Um source packages bauen zu können, müssen einige Pakete vorhanden sein. Im Beispiel waren dpkg-dev, fakeroot und debhelper nachzuinstallieren (da mit diesem System noch kein source package kompiliert wurde).

# aptitude install dpkg-dev fakeroot debhelper

Abhängigkeiten von Paketen, die zum Kompilieren von source packages benötigt werden, lassen sich mit dem Modus build-dep von apt-get auflösen und installieren.

# apt-get build-dep fuzzyocr

Um den Quelltext zu empfangen, wird der nächste Befehl ausgeführt.

# apt-get source fuzzyocr

Im aktuellen Verzeichnis finden sich nach dem Download neben dem Originalquellcodearchiv (.orig.tar.gz), Debian-Patches (.diff.gz) und der Paketbeschreibung (.dsc) ein Verzeichnis, das den entpackten und gepatchten Sourcecode enthält.

# ls -l
total 140
[...]
drwxr-xr-x 4 root root  4096 May 19 15:07 fuzzyocr-2.3b
-rw-r–r– 1 root root  8327 Jan  6 11:02 fuzzyocr_2.3b-2.diff.gz
-rw-r–r– 1 root root   556 Jan  6 11:02 fuzzyocr_2.3b-2.dsc
-rw-r–r– 1 root root   849 May 19 15:07 fuzzyocr_2.3b-2_i386.changes
-rw-r–r– 1 root root 76411 Dec  7 12:02 fuzzyocr_2.3b.orig.tar.gz

In diesem Verzeichnis können bei Bedarf Änderungen am Code oder der Konfiguration vorgenommen werden, bevor mit dem folgenden Kommando das Paket gebaut wird. Sind keine Änderungen vorgesehen, kann das Paket gleich mit apt-get -b source fuzzyocr erstellt werden.

# dpkg-buildpackage -rfakeroot -uc -b

Bevor FuzzyOCR installiert werden kann, müssen noch Abhängigkeiten aufgelöst werden. Danach kann das neue Paket installiert werden.

# aptitude install gocr netpbm libungif-bin libstring-approx-perl
# dpkg -i fuzzyocr_2.3b-2_all.deb

ftplicity: Timeout der FTP-Verbindung

Als Backup-Lösung wird auf einem meiner Server ftplicity (duplicity) eingesetzt. Seit ein paar Wochen kam es beim Erstellen der inkrementellen Backups gelegentlich zu Abbrüchen mit Fehlermeldungen wie der folgenden.

Traceback (most recent call last):
File "/usr/bin/duplicity", line 373, in ?
if __name__ == "__main__": main()
File "/usr/bin/duplicity", line 367, in main
else: incremental_backup(sig_chain)
File "/usr/bin/duplicity", line 170, in incremental_backup
bytes_written = write_multivol("inc", tarblock_iter, globals.backend)
File "/usr/bin/duplicity", line 89, in write_multivol
backend.put(tdp, dest_filename)
File "/usr/lib/python2.4/site-packages/duplicity/backends.py", line 349, in put
self.error_wrap('storbinary', "STOR "+remote_filename, source_file)
File "/usr/lib/python2.4/site-packages/duplicity/backends.py", line 335, in error_wrap
except ftplib.all_errors, e: raise BackendException(e)
duplicity.backends.BackendException

Um eine Ursache für die Fehlermeldung zu finden, erstellte ich mit tcpdump einen Mitschnitt des Netzverkehrs zum Backupservers. Die Analyse ergab, dass die FTP-Verbindung getrennt wird, weil duplicity keine Daten mehr sendet. Nach einer Pause von fünf Minuten bricht der Server die Verbindung ab (timeout) und wenn der Client danach versucht, den Rest des Backups zu übertragen, kommt es zu oben genannter Fehlermeldung.

Eine Ursache für die eingelegte Pause von duplicity habe ich bisher nicht finden können. Bei meiner Suche stiess ich jedoch auf einen Patch, der duplicity um die Funktion erweitert, eine abgebrochene FTP-Verbindung wiederherzustellen. Damit läuft das Backup, mit Pausen, aber ohne Fehler, wieder durch.