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











