Offline-Version einer (kleinen) Website erstellen

Um eine kleine Intranetanwendung auf CD bereitstellen zu können, habe ich ein kleines Shell-Script geschrieben, das mir die Webseiten als Offline-Version speichert. Die Anwendung ist in PHP geschrieben und gibt lediglich ein paar Inhalte als HTML aus, erwartet also keine Benutzereingaben usw.

Als erstes habe ich PHP so konfiguriert, dass auch HTML-Dateien geparst werden. Dadurch benötige ich nicht php als Dateiendung und kann somit Links usw. auf die HTML-Seiten setzen, da PHP-Dateien offline nicht funktionieren würden. Dazu habe ich einfach die folgende Zeile in die entsprechende VirtualHost-Datei des Apache-Servers eingetragen:

AddType application/x-httpd-php .php .html

Das Script ist nun eigentlich recht einfach. Ich definiere die Seiten, die es speichern soll, und lade diese mit lynx herunter. Danach lasse ich direkt tidy drüberlaufen, um den Quelltext zu formatieren. Fertig 🙂 Mein Script enthält dann noch ein paar simple cp-Befehle um einige benötigte Dateien und Ordner zu kopieren und (da diese mit Subversion versioniert werden) alle .svn-Ordner zu entfernen.

#!/bin/bash # HTMLDATEIEN="Seite1 Seite2 Seite3" PDFORDNER="Ordner1 Ordner2 Ordner3" # hier liegen die PHP-Dateien auf dem Webserver WEBPATH="/srv/www/offlinecd/" # hier wird die Offline-Version erzeugt CDPATH=${WEBPATH}"CD/" # hier liegen die zu kopierenden Ordner PDFPATH=${WEBPATH}"PDF/" # das ist die URL der Website URL="http://ganz.tolle.anwendung.de/" # tidy-Befehl, der über die HTML-Quellen läuft TIDYCMD="/usr/bin/tidy -i --quiet true --tidy-mark true -wrap 0 -raw --output-xhtml true --indent auto --indent-spaces 4 --break-before-br false --vertical-space no --char-encoding utf8 --fix-uri no" # if [ -e ${CDPATH} ] then echo "Verzeichnis wird geloescht: " $CDPATH rm ${CDPATH} -R fi if [ ! -e ${CDPATH} ] then echo "Verzeichnis wird angelegt: " $CDPATH mkdir -p ${CDPATH} fi # for HTMLDATEI in $HTMLDATEIEN do echo "Speichere HTML-Datei: " $HTMLDATEI lynx -source ${URL}${HTMLDATEI}".html" | ${TIDYCMD} > ${CDPATH}${HTMLDATEI}".html" done # for ORDNER in $PDFORDNER do echo "Kopiere Ordner: " $ORDNER cp ${PDFPATH}${ORDNER} ${CDPATH} -R done # cp ${WEBPATH}*.gif ${CDPATH} cp ${WEBPATH}*.jpg ${CDPATH} echo "Kopiere CSS-Dateien..." cp ${WEBPATH}*.css ${CDPATH} # echo "Entferne .svn-Ordner..." find ${CDPATH} -name .svn -print0 | xargs -0 rm -R

Über Stefan

Polyglot Clean Code Developer

2 Kommentare

  1. Hey,

    wie wär’s denn einfach mit httrack?
    (http://www.httrack.com/)

    Damit kannst du von jeder beliebigen Seite einen offline Mirror erstellen.
    Und es wird sogar die Linkstruktur angepasst. Sprich Verknüpfungen, Links etc. zeigen auch wirklich auf den lokalen Mirror.

  2. Ja, das kenne ich auch. Aber ich wollte direkt tidy drüberlaufen lassen und muss außerdem noch einige Sachen durchführen, die im obigen Script nicht gezeigt sind. Und da dache ich mir, bevor ich an zwei Stellen bastel, baue ich das Erstellen der Offline-Version gleich mit ins Script ein. Geht ja ganz fix 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax