STRATO Linux VServer mit Webserver im Rettungssystem

Maintenance Seite

Ich kann den STRATO vServern in ein Rettungssystem starten, welches leider keinen Webserver enthält.
Das Rettungssystem ist Praktisch, da ich über dieses Alternative Betriebssystem an alle Daten die auf dem Server abgelegt sind gelangen kann, auch wenn mein selbst verwaltetes Betriessystem auf dem Server nicht mehr funktioniert. Die Besucher meiner Seite erfahren leider nicht das ich meinen Server grade warte.
Um den potentiellen besuchern meiner Seite jedoch zeigen zu können das meine Seite durchaus noch vorhanden, nur grade in einem Wartungsfenster ist, ist ein solcher sehr wünschenswert.

Der einfache versuch via „apt update && apt install lighttps“ führt jedoch leider zu ein paar nicht sehr aussagekräftigen Fehlermeldungen.

Es fehlen jedoch einfach nur ein paar Benutzer, genauer die Benutzer _apt, der Benutzer postfix und der Benutzer www-data.

adduser --quiet --gecos "" --no-create-home --disabled-password --disabled-login --ingroup nogroup --force-badname -uid 119 _apt
adduser --quiet --gecos "" --no-create-home --disabled-password --disabled-login --ingroup postfix -uid 111 postfix
adduser --quiet --gecos "" --no-create-home --disabled-password --disabled-login --ingroup www-data --uid 33 www-data

Im Anschluss kann der Webserver einfach installiert werden.:

apt update
apt -y install lighttpd php-cgi
lighttpd-enable-mod fastcgi

Im Anschluss bearbeite ich die Datei /etc/lighttpd/lighttpd.conf und füge am ende die folgenden 4 Zeilen an.:

url.rewrite = ( "" => "/maintenance.php" )
fastcgi.server = ( ".php" => ((
 "bin-path" => "/usr/bin/php-cgi",
 "socket" => "/tmp/php.sock"
)))

Die Raute # in der Zeile ‚#  „mod_rewrite“,‘ muss entfernt werden, so das die erste Zeile jedwede Anfragen an die Datei maintenance.php im Ordner /var/www/html/ umleiten kann.
Die verbleibenden drei Zeilen ermöglichen es dem Webserver PHP-Scripte auszuführen.

Die Datei /var/www/html/maintenance.php gibt in meinem Beispiel den HTTP StatusCode 503 (Vorübergehend nicht verfügbar; Server überlastet, ausgefallen oder in Wartung) und einen kurzen Wartungstext aus.:

<?php
if ( $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.1' )
 { $p = 'HTTP/1.1'; }else{ $p = 'HTTP/1.0'; }
header( $p.' 503 Service Unavailable', true, 503 );
header( 'Retry-After: 3600' );
?><!doctype html>
<title>Site Maintenance</title>
<style>
  body { text-align: center; padding: 150px; }
  h1 { font-size: 50px; }
  body { font: 20px Helvetica, sans-serif; color: #333; }
  article { display: block; text-align: left; width: 650px; margin: 0 auto; }
  a { color: #dc8100; text-decoration: none; }
  a:hover { color: #333; text-decoration: none; }
</style>

<article>
    <h1>We&rsquo;ll be back soon!</h1>
    <div>
        <p>Sorry for the inconvenience but we&rsquo;re performing some maintenance at the moment.</p>
        <p>we&rsquo;ll be back online shortly!</p>
        <p>&mdash; The Team</p>
    </div>
</article>

Zu guter letzt muss der Webserver nur noch neu gestartet werden, und es wird die Wartungsseite angfezeigt.

service lighttpd restart

Wie finde ich heraus ob mein Webserver die Seiten gzip komprimiert ausliefert…

Am Beispiel des Heise Servers holem wir zuerst die Daten via wget.

$ wget --header="Accept-Encoding: gzip, deflate" http://heise.de
--2012-01-04 15:50:08-- http://heise.de/
Resolving heise.de... 193.99.144.80, 2a02:2e0:3fe:100::8
Connecting to heise.de|193.99.144.80|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.heise.de/ [following]
--2012-01-04 15:50:08-- http://www.heise.de/
Resolving www.heise.de... 193.99.144.85, 2a02:2e0:3fe:100::7
Connecting to www.heise.de|193.99.144.85|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 17439 (17K) [text/html]
Saving to: `index.html'

100%[=======>] 17,439 --.-K/s in 0.05s

2012-01-04 15:50:08 (316 KB/s) - `index.html' saved [17439/17439]

jetzt schauen wir, ob die geholte index Datei gzip komprimiert ist:

$ strings index.html|head -n 1
goNY

ok… das sieht nicht nach sinollem Text aus, könnte GZIP sein…
um dies zu prüfen entpacke ich die Datei mittels gzip:

$ mv index.html index.html.gz
gzip -d index.html.gz

und prüfen ob der Inhalt der Erwarteten HTML Datei entspricht.

strings index.html|head -n 1
< !DOCTYPE html>

Das ist der vollständigste Weg zu prüfen ob eine Seite von Webserver gzip koprimiert ausgeliefert wird.?

WordPress rewrite im Lighttpd

Um WordPress in dem Webserver Lighttpd mit „schönen URLs“ zu betreiben ist ein Rewrite der Adresse notwendig.
Die benötigte „modrewrite“ Regel in der Lighttpd habe ich für mich als Erinnerung folgend hinterlegt.:

$HTTP[”host”] =~ “^(?:www\.)?DOMAINNAMEN\.TLD(?::|$)” {
server.document-root = “/var/www/hosts/DOMAIN.TLD/”
accesslog.filename = “/var/www/logs/DOMAIN.TLD-access.log”
url.rewrite = ( “^/(wp-admin/|wp-content/|wp-includes/|wp-login\.php|xmlrpc\.php|robots\.txt|sitemap\.xml|wp-).*” => “$0″,
“^” => “index.php” )
}

 

Lighttpd 1.5 – rebuild

LIGHTTPD

System vorbereiten

aptitude install checkinstall python-mysqldb liblua5.1-dev libmysqlclient-dev \
libssl-dev libbz2-dev libpcre3-dev libgtkhtml2-0 libgtkhtml2-dev \
libsqlite-dev libsqlite3-dev libmemcache-dev libaio-dev libldap2-dev \
automake1.9 libgeoip-dev e2fsprogs e2fsprogs-devel \
aptitude remove --purge automake1.4 automake1.7 automake1.8

alleine wegen den Konfigurations und startscripten:

aptitude install lighttpd

Quellen herunterladen

cd /usr/src svn co svn://svn.lighttpd.net/lighttpd/trunk/
mv /usr/src/trunk /usr/src/lighttpd-1.5.0
cd /usr/src/lighttpd-1.5.0
./autogen.sh

GeoIP Modul für Lighttpd 1.5

wget http://redmine.lighttpd.net/attachments/download/717/mod_geoip_for_1.5.c
mv mod_geoip_for_1.5.c src/mod_geoip.c
vi src/Makefile.am
nach der letzter "lib_LTLIBRARIES" Zeile folgendes einfügen:
lib_LTLIBRARIES += mod_geoip.la
mod_geoip_la_SOURCES = mod_geoip.c
mod_geoip_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
mod_geoip_la_LIBADD = $(common_libadd) -lGeoIP

GeoIP Datenbanken herunterladen

wget -O /var/www/GeoIP.dat.gz http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget -O /var/www/GeoLiteCity.dat.gz http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip /var/www/*.dat.gz

 

/etc/lighttpd/conf-available/10-geoip.conf
#### GeoIP
geoip.db-filename = „/var/www/GeoIP.dat“
geoip.memory-cache = „enable“
#### GeoIP Lite City
# geoip.db-filename = „/var/www/GeoLiteCity.dat“
# geoip.memory-cache = disable
server.modulesi += ( „mod_geoip“ )

./configure –enable-maintainer-mode –prefix=/usr –with-openssl –with-lua=lua5.1 –with-memcache –with-gdbm –with-webdav-props –with-ldap –with-attr –with-linux-aio –with-mysql –with-webdav-locks

make
checkinstall –install=no -D –default –pakdir=/usr/src –gzman=yes

aptitude remove lighttpd

dpkg -i lighttpd_1.5.0-1_i386.deb