Offline-Version einer (kleinen) Website erstellen

URL dieses Beitrags: http://blog.stefan-macke.com/2007/12/19/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.

  1. #!/bin/bash
  2. #
  3. HTMLDATEIEN="Seite1 Seite2 Seite3"
  4. PDFORDNER="Ordner1 Ordner2 Ordner3"
  5. # hier liegen die PHP-Dateien auf dem Webserver
  6. WEBPATH="/srv/www/offlinecd/"
  7. # hier wird die Offline-Version erzeugt
  8. CDPATH=${WEBPATH}"CD/"
  9. # hier liegen die zu kopierenden Ordner
  10. PDFPATH=${WEBPATH}"PDF/"
  11. # das ist die URL der Website
  12. URL="http://ganz.tolle.anwendung.de/"
  13. # tidy-Befehl, der über die HTML-Quellen läuft
  14. 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"
  15. #
  16. if [ -e ${CDPATH} ]
  17. then
  18.   echo "Verzeichnis wird geloescht: " $CDPATH
  19.   rm ${CDPATH} -R
  20. fi
  21. if [ ! -e ${CDPATH} ]
  22. then
  23.   echo "Verzeichnis wird angelegt: " $CDPATH
  24.   mkdir -p ${CDPATH}
  25. fi
  26. #
  27. for HTMLDATEI in $HTMLDATEIEN
  28. do
  29.   echo "Speichere HTML-Datei: " $HTMLDATEI
  30.   lynx -source ${URL}${HTMLDATEI}".html" | ${TIDYCMD} > ${CDPATH}${HTMLDATEI}".html"
  31. done
  32. #
  33. for ORDNER in $PDFORDNER
  34. do
  35.   echo "Kopiere Ordner: " $ORDNER
  36.   cp ${PDFPATH}${ORDNER} ${CDPATH} -R
  37. done
  38. #
  39. cp ${WEBPATH}*.gif ${CDPATH}
  40. cp ${WEBPATH}*.jpg ${CDPATH}
  41. echo "Kopiere CSS-Dateien..."
  42. cp ${WEBPATH}*.css ${CDPATH}
  43. #
  44. echo "Entferne .svn-Ordner..."
  45. find ${CDPATH} -name .svn -print0 | xargs -0 rm -R
Füge diesen Artikel zu deinen Bookmarks hinzu Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • del.icio.us
  • bodytext
  • MisterWong
  • Reddit
  • Technorati
  • Spurl
  • description

Kommentare zu diesem Beitrag

  1. Gravatar Dudley
    Am 21. December 2007 um 12:36 Uhr

    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. Gravatar Stefan
    Am 21. December 2007 um 13:37 Uhr

    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 :)

Einen Kommentar schreiben

XHTML: Diese Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>