Apache / Wartungsseite einrichten
Apache / Wartungsseite einrichten
Hallo ich suche nach einer Möglichkeit eine "Wartungsarbeieten-Seite" für den Apache2-Webserver einzurichten.
Dabei möchte ich daß während der Wartungsarbeiten global alle vHosts quasi deaktiviert und durch eine entsprechende HTML-Seite mit einem Hinweis auf Wartungsarbeiten ersetzt werden. Von bestimmten IP-Adressen soll der Zugriff auf die vHosts jedoch weiterhin möglich sein um die Websiten während der Wartungsarbeiten testen zu können.
Deshalb dachte ich an eine Art serverweite IP-basierte-Umleitung. Dann würde ich zentral für alle vHosts/Server eine Umleitung zur Wartungsseite einrichten und nur Anfragen von einer bestimmten IP würden die "normalen" Inhalte der vhosts liefern.
Nun eine derartige Umleitung ließe sich z.B. mittels mod_rewrite wie folgt realisieren:
<Directory />
RewriteEngine On
# die IP 88.76.202.104 soll z.B. nicht umgeleitet werden
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten.html /wartungsarbeiten.html [L]
</Directory>
Das Problem ist nun, dass ich jetzt immer auf ein Verzeichnis bzw. eine Datei unterhalb des DocumentRoot des jeweiligen vHosts weitergeleitet werde. D.h. :
domain1.de wird umgeleitet nach domain1.de/wartungsarbeiten.html
domain2.de wird umgeleitet nach domain2.de/wartungsarbeiten.html
usw.
deshalb müsste ich im Prinzip für jeden vHost entweder ein eigenes Verzeichnis oder zumindest eine eigne Datei wartungsarbeiten.html anlegen. Bis jetzt ist es mir leider nicht gelungen eine Umleitung auf irgendein internes gemeinsames Verzeichnis oder Datei einzurichten die für alle vHost gelten würde..
Vielleicht kennt ja jemand eine Möglichkeit oder eine bessere Lösung für mein Problem?
Vielen Dank im Voraus
jack
Dabei möchte ich daß während der Wartungsarbeiten global alle vHosts quasi deaktiviert und durch eine entsprechende HTML-Seite mit einem Hinweis auf Wartungsarbeiten ersetzt werden. Von bestimmten IP-Adressen soll der Zugriff auf die vHosts jedoch weiterhin möglich sein um die Websiten während der Wartungsarbeiten testen zu können.
Deshalb dachte ich an eine Art serverweite IP-basierte-Umleitung. Dann würde ich zentral für alle vHosts/Server eine Umleitung zur Wartungsseite einrichten und nur Anfragen von einer bestimmten IP würden die "normalen" Inhalte der vhosts liefern.
Nun eine derartige Umleitung ließe sich z.B. mittels mod_rewrite wie folgt realisieren:
<Directory />
RewriteEngine On
# die IP 88.76.202.104 soll z.B. nicht umgeleitet werden
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten.html /wartungsarbeiten.html [L]
</Directory>
Das Problem ist nun, dass ich jetzt immer auf ein Verzeichnis bzw. eine Datei unterhalb des DocumentRoot des jeweiligen vHosts weitergeleitet werde. D.h. :
domain1.de wird umgeleitet nach domain1.de/wartungsarbeiten.html
domain2.de wird umgeleitet nach domain2.de/wartungsarbeiten.html
usw.
deshalb müsste ich im Prinzip für jeden vHost entweder ein eigenes Verzeichnis oder zumindest eine eigne Datei wartungsarbeiten.html anlegen. Bis jetzt ist es mir leider nicht gelungen eine Umleitung auf irgendein internes gemeinsames Verzeichnis oder Datei einzurichten die für alle vHost gelten würde..
Vielleicht kennt ja jemand eine Möglichkeit oder eine bessere Lösung für mein Problem?
Vielen Dank im Voraus
jack
Re: Apache / Wartungsseite einrichten
Alle Einträge aus sites-enabled löschen bzw. Ordner umbenennen. Dann nur einen Vhost auf * anlegen.jack99 wrote:Dabei möchte ich daß während der Wartungsarbeiten global alle vHosts quasi deaktiviert
Schließt meinen Vorschlag oben aus.jack99 wrote:und durch eine entsprechende HTML-Seite mit einem Hinweis auf Wartungsarbeiten ersetzt werden. Von bestimmten IP-Adressen soll der Zugriff auf die vHosts jedoch weiterhin möglich sein um die Websiten während der Wartungsarbeiten testen zu können.
Ist ja auch klar warum. / ist zwar absolut, jedoch nur für die Domain!jack99 wrote:<Directory />
RewriteEngine On
# die IP 88.76.202.104 soll z.B. nicht umgeleitet werden
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten.html /wartungsarbeiten.html [L]
</Directory>
Mein Vorschlag (reine Idee / nicht gestetest):
Der Ordner der alle aktiven VHosts drin hat wird umbenannt. An seine Stelle kommt ein Ordner der nur eine einzige Datei (oder symlink) enthält. Diese Datei includiert alle aktiven VHosts die im umbenannten Ordner liegen.
Zugleich kannst du dir eine zweite solche Datei anlegen, die bei Wartungsarbeiten aktiv ist. Inhalt:
Wenn IP = 1.2.3.4 -> includiere alle VHosts
Wenn IP != 1.2.3.4 -> zeig mir ne hässliche "Wartungsarbeiten"-Seite ;)
Sollte möglich sein mit nativem Apache ohne mod_rewrite.
Gruß
dtdesign
Re: Apache / Wartungsseite einrichten
Vielen Dank erst mal für die schnelle Antwort.
Nun diese Lösung ist eigentlich das was ich brauche:
Wenn IP = 1.2.3.4 -> includiere alle VHosts
Wenn IP != 1.2.3.4 -> zeig mir ne hässliche "Wartungsarbeiten"-Seite
aber dazu bräuchte ich doch eine Möglichkeit die vHosts zur Laufzeit in Abhängigkeit von der IP zu includen, also
wenn IP=1.2.3.4 dann include /etc/apache2/sites-enabled/
wenn IP!=1.2.3.4 dann include /etc/apache2/sites-enabled/vHost_wartung
man muss jedoch den Apache immer reloaden damit er die neuen Einstellungen übernimmt, somit ist die o.g. Abfrage zur Laufzeit nicht möglich, oder habe ich das falsch verstanden?
viele Grüße
jack
Nun diese Lösung ist eigentlich das was ich brauche:
Wenn IP = 1.2.3.4 -> includiere alle VHosts
Wenn IP != 1.2.3.4 -> zeig mir ne hässliche "Wartungsarbeiten"-Seite
aber dazu bräuchte ich doch eine Möglichkeit die vHosts zur Laufzeit in Abhängigkeit von der IP zu includen, also
wenn IP=1.2.3.4 dann include /etc/apache2/sites-enabled/
wenn IP!=1.2.3.4 dann include /etc/apache2/sites-enabled/vHost_wartung
man muss jedoch den Apache immer reloaden damit er die neuen Einstellungen übernimmt, somit ist die o.g. Abfrage zur Laufzeit nicht möglich, oder habe ich das falsch verstanden?
viele Grüße
jack
Re: Apache / Wartungsseite einrichten
Ist auch irgendwie logisch. Der Indianer wertet VHosts anhand der Konfigurationsdatei im Speicher aus, die immer neu von der Platte laden zu müssen wäre der absolute Performance-Killer, viel zu viel Overhead :)jack99 wrote:man muss jedoch den Apache immer reloaden damit er die neuen Einstellungen übernimmt, somit ist die o.g. Abfrage zur Laufzeit nicht möglich, oder habe ich das falsch verstanden?
Gruß
dtdesign
Re: Apache / Wartungsseite einrichten
ideal wäre eine Lösung z.B. mittels einer übergordneten .htaccess Datei z.B. direkt im DocumentRoot des Webservers in "/var/www". .htaccess wird ja zur Laufzeit geparst. Vielleicht gibt es da eine Möglichkeit mit mod_rewrite eine entsprechende Umleitung anhand der IP einzurichten. Eigentlich funktioniert die Umleitung ja bereits, nur daß ich halt immer auf zu der wartungsseite.html in dem jeweiligen vHost umgeleitet werde.
Mich würde jedoch auch interessieren ob es denn evtl. noch andere, bessere Lösungsansätze gibt. Denn die von mir beschriebene Möglichkeit setzt auch voraus, daß die "globale" mod_rewrite Direktiven nicht von den .htaccess direktiven in den jeweiligen vHosts überschrieben werden.
viele Grüße
jack
Mich würde jedoch auch interessieren ob es denn evtl. noch andere, bessere Lösungsansätze gibt. Denn die von mir beschriebene Möglichkeit setzt auch voraus, daß die "globale" mod_rewrite Direktiven nicht von den .htaccess direktiven in den jeweiligen vHosts überschrieben werden.
viele Grüße
jack
Re: Apache / Wartungsseite einrichten
Quick&Dirty&Untested:
Code: Select all
ErrorDocument 403 /path/to/wartungsarbeiten.html
Order allow,deny
Deny from all
Allow from <IP>
Re: Apache / Wartungsseite einrichten
vielen Dank für den Vorschlag.
Die Idee gefällt mir schon mal sehr gut. Allerdings gibt es da noch zwei Probleme:
1) Die Fehler- bzw. Wartungsseite muss leider nach wie vor im DocumentRoot des jeweiligen vHosts liegen
2) Gibt es in dem DocumentRoot des jeweiligen vHosts bereits eine Datei .htaccess mit den Direktiven "Order allow,deny", so werden die Anweisungen der übergeordneten "Wartungs"-.htaccess dadurch leider außer kraft gesetzt. Es sei denn AllowOverride wir wie folgt gesetzt:
<Directory "/var/www/">
# In diesem Verzeichnis wird die .htaccess platziert
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory "/var/www/vhosts/">
# für alle vhosts werden .htaccess-direktiven deaktivieret
Options FollowSymLinks
AllowOverride none
</Directory>
Das wiederum setzt jedoch voarus, daß in den vhosts selbst keine AllowOverride all direktiven mehr vorhanden sind, die die o.g. Einstellungen überschreieben würden. Alles in allem scheint mir diese Lösung deshalb etwas zu unübersichtlich und zu umständlich.
viele Grüße
jack
Die Idee gefällt mir schon mal sehr gut. Allerdings gibt es da noch zwei Probleme:
1) Die Fehler- bzw. Wartungsseite muss leider nach wie vor im DocumentRoot des jeweiligen vHosts liegen
2) Gibt es in dem DocumentRoot des jeweiligen vHosts bereits eine Datei .htaccess mit den Direktiven "Order allow,deny", so werden die Anweisungen der übergeordneten "Wartungs"-.htaccess dadurch leider außer kraft gesetzt. Es sei denn AllowOverride wir wie folgt gesetzt:
<Directory "/var/www/">
# In diesem Verzeichnis wird die .htaccess platziert
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory "/var/www/vhosts/">
# für alle vhosts werden .htaccess-direktiven deaktivieret
Options FollowSymLinks
AllowOverride none
</Directory>
Das wiederum setzt jedoch voarus, daß in den vhosts selbst keine AllowOverride all direktiven mehr vorhanden sind, die die o.g. Einstellungen überschreieben würden. Alles in allem scheint mir diese Lösung deshalb etwas zu unübersichtlich und zu umständlich.
viele Grüße
jack
Re: Apache / Wartungsseite einrichten
Nö. Die Error403-Seite kann auch in /etc liegen, das spielt erstmal keine Rolle (abgesehen von Rechten etc...)jack99 wrote:1) Die Fehler- bzw. Wartungsseite muss leider nach wie vor im DocumentRoot des jeweiligen vHosts liegen
Nö. Wenn du in der VHost Konfiguration die Direktive "AllowOverride None" drin hast, macht die .htaccess das, was sie eigentlich tun sollte: nichts (Stichwort Performance!)jack99 wrote:Das wiederum setzt jedoch voarus, daß in den vhosts selbst keine AllowOverride all direktiven mehr vorhanden sind, die die o.g. Einstellungen überschreieben würden. Alles in allem scheint mir diese Lösung deshalb etwas zu unübersichtlich und zu umständlich.
Die Lösung ist vielleicht nicht die Beste, aber deine Frickeleien (nicht als persönlichen Angriff auffassen!) machen es erst unübersichtlich.
Nimm dir lieber ein LightTPD als Webserver, der kommt mit 90% weniger Konfigurationsaufwand zurecht = übersichtlicher :)
Re: Apache / Wartungsseite einrichten
Wenn ich in der .htacceess z.B. ErrorDocument 403 /var/www/wartungsarbeiten.html eintrage, dann steht in der error.logNö. Die Error403-Seite kann auch in /etc liegen, das spielt erstmal keine Rolle (abgesehen von Rechten etc...)
client denied by server configuration: /var/www/vhosts/domain.de/var
Das habe ich doch nicht anders gemeint? Die vHosts haben allerdings Ihre eigene .htaccess Dateien, somit müßte ich bei allen vHosts AllowOverride None einfügen - das wäre richtig umständlich und würde auch dazu führen, daß dei Websiten zumindest teilweise nicht mehr funktionieren.Nö. Wenn du in der VHost Konfiguration die Direktive "AllowOverride None" drin hast, macht die .htaccess das, was sie eigentlich tun sollte: nichts
Die Lösung von Joe funktioniert halt nicht bzw. es setzt zu viele Sachen voraus. Mit einem einfachen erstellen der .htaccess ist es leider nicht getan und das macht ja die ganzen Frickeleien ja erst erforderlich. Ich würde ja gerne darauf verzichten, ich weiß nur nicht wie. Die Problematik hast Du ja gut auf den Punkt gebrachtDie Lösung ist vielleicht nicht die Beste, aber deine Frickeleien (nicht als persönlichen Angriff auffassen!) machen es erst unübersichtlich.
nur die Lösung fehlt noch.Wenn IP = 1.2.3.4 -> includiere alle VHosts
Wenn IP != 1.2.3.4 -> zeig mir ne hässliche "Wartungsarbeiten"-Seite
viele Grüße
jack
Re: Apache / Wartungsseite einrichten
Egal wie du es drehst oder wendest, so eine Krücke in einen Apache einzubauen ist einfach nur eklig. Mein Vorschlag listet nur die grobe Struktur auf, das ganze weitere wird - wie du bereits festgestellt hast - eine einzige Frickelei.
Gruß
dtdesign
Gruß
dtdesign
Re: Apache / Wartungsseite einrichten
Sorry verstehe ich nicht. Es gibt ein Problem und es wird halt nach einer guten Lösung gesucht. Das ist in der EDV eigentlich der alltag - wenn Du so willst ist die ganze EDV somit eine einzige Frickelei.Krücke, eklig?
viele Grüße
jack
Re: Apache / Wartungsseite einrichten
Ok, ungünstig formuliert. Ich wollte damit nur andeuten, dass dein Vorhaben am Ende eine reine Frickelei wird und das mein Vorschlag nichts anderes ist als das, was Joe User schrieb. Nur versuchst du nach einer immer besseren Lösung zu suchen (soweit auch lobenswert), jedoch stößt man bei diesem konkreten Problem schnell an die Unzulänglichkeit von Apache.
Ich muss mal schauen, irgendwo müsste ich noch einen Apache installiert haben, vielleicht findet sich ja eine Lösung.
Gruß
dtdesign
Ich muss mal schauen, irgendwo müsste ich noch einen Apache installiert haben, vielleicht findet sich ja eine Lösung.
Gruß
dtdesign
Re: Apache / Wartungsseite einrichten
Definiere das ErrorDocument und die Denys global in der httpd.conf und gut ist...
Re: Apache / Wartungsseite einrichten
wie gesagt die folgede Lösung geht schon in die richtige richtung und sie ist auch nicht besonders aufwendig:
Das "Problem" ist nur, daß die Umleitung immer zum DocumentRoot des jeweiligen vHost führt und nicht zu dem angebenem absoluten pfad und das für alle vHosts AllowOverride none gesetzt werden muss (weiß allerdings auch nicht warum, ansonsten funkt. es nicht)?
viele Grüße
jack
Mann könnte diesen Code dann nur nach bedarf includen und das Problem wäre eigentlich mit einem Handgrif erledigt. Das wäre sicherlich akzeptabel.<Directory />
RewriteEngine On
# die IP 88.76.202.104 soll z.B. nicht umgeleitet werden
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten.html /var/www/vhosts/wartung/wartungsarbeiten.[L]
</Directory>
Das "Problem" ist nur, daß die Umleitung immer zum DocumentRoot des jeweiligen vHost führt und nicht zu dem angebenem absoluten pfad und das für alle vHosts AllowOverride none gesetzt werden muss (weiß allerdings auch nicht warum, ansonsten funkt. es nicht)?
viele Grüße
jack
Re: Apache / Wartungsseite einrichten
Zugriffe auf die Platte ist immer langsamer als RAM, daher wäre der Overhead durchaus vorhanden und in Relation zu der Einstellung die Konfigurationsdateien im Speicher zu lassen, macht es durchaus eine Menge aus. Heutzutage sowieso vernachlässigbar, aber es hilft beim Verständnis, weshalb soetwas nicht on-the-fly geht. Ansonsten stimme ich dir voll und ganz zu.matzewe01 wrote:Das laden von der Platte wohl weniger. die Verarbeitung der Daten auch nicht unbdedingt.
@jack99:
Warum rewrite? Ich halte den Vorschlag von Joe User immernoch für den besten, da es meiner Meinung nach die sauberste Lösung ist. Probiere es mal mit der!
Gruß
dtdesign
Re: Apache / Wartungsseite einrichten
@joe
Nun die testdomain wird zwar nicht mehr angezeigt, aber die Wartungsseite ebenfalls nicht. In der error.log steht nämlich:
client denied by server configuration: /var/www/vhosts/www-user/html/testdomain.de/
client denied by server configuration: /var/www/vhosts/www-user/html/testdomain.de/var
Obwohl, die Anweisung
ErrorDocument 403 /var/www/vhosts/www-user/wartung/wartungsarbeiten.html
im globalen Serverkontext steht versucht der vhost offenbar innerhalb von seinem DocumentRoot die Datei zu finden (die Deny´s lassen sich übrigens nicht im globalen Server-Kontext definieren).
Zweiter Nachteil: sobald in dem vHost die Direktive AllowOverride all steht und eine .htaccess datei den Zugriff steuert funktioniert die Lösung nicht mehr. Es ist nun mal so daß die meisten vHosts zusätzlich durch ihre .htacces-dateien gesteuert werden. somit kann ich die nicht alle auf AllowOverride none setzten.
@matzewe01
So kann ich jedoch die vhosts nicht im Wartungsbetrieb testen.
Hast Du bei Dir eine Lösung am laufen die es Dir ermöglicht die einzelnen vHosts im Wartungsbetrieb zu testen, d.h. Deine Kunde sehen die Wartungsseite, Du kannst aber die Websiten der Kunden ganz normal aufrufen?
viele Grüße
jack
ok , dann richte ich es wie folgt ein:Definiere das ErrorDocument und die Denys global in der httpd.conf und gut ist...
Code: Select all
NameVirtualHost xxx.xxx.xxx.xxx:80
DocumentRoot "/var/www"
UseCanonicalName Off
ErrorDocument 403 /var/www/vhosts/www-user/wartung/wartungsarbeiten.html
<Directory />
<Files ~ "^.ht">
deny from all
</Files>
Options FollowSymLinks
AllowOverride none
Order allow,deny
Deny from all
Allow from 88.76.202.104
</Directory>
<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName testdomain.de
ServerAlias *.testdomain.de
DocumentRoot /var/www/vhosts/www-user/html/testdomain.de
SuexecUserGroup www-user www-data
<Directory "/var/www/vhosts/www-user/html/testdomain.de">
Options +FollowSymLinks
</Directory>
</VirtualHost>
client denied by server configuration: /var/www/vhosts/www-user/html/testdomain.de/
client denied by server configuration: /var/www/vhosts/www-user/html/testdomain.de/var
Obwohl, die Anweisung
ErrorDocument 403 /var/www/vhosts/www-user/wartung/wartungsarbeiten.html
im globalen Serverkontext steht versucht der vhost offenbar innerhalb von seinem DocumentRoot die Datei zu finden (die Deny´s lassen sich übrigens nicht im globalen Server-Kontext definieren).
Zweiter Nachteil: sobald in dem vHost die Direktive AllowOverride all steht und eine .htaccess datei den Zugriff steuert funktioniert die Lösung nicht mehr. Es ist nun mal so daß die meisten vHosts zusätzlich durch ihre .htacces-dateien gesteuert werden. somit kann ich die nicht alle auf AllowOverride none setzten.
@matzewe01
Das ist an sich ja kein Problem, das könne man z.B. auch wie folgt lösen:Alle Kunden erhalten zumindest bei uns, exakt die gleiche Wartungsseite.
Kann man natürlich auch individuell konfigurieren.
Code: Select all
#Server im normalen Betrieb
include /etc/apache2/sites-enabled/
#include /etc/apache2/sites-enabled/WARTUNGSSEITE
Code: Select all
#Server im Wartungsbetrieb
#include /etc/apache2/sites-enabled/
include /etc/apache2/sites-enabled/WARTUNGSSEIT
Hast Du bei Dir eine Lösung am laufen die es Dir ermöglicht die einzelnen vHosts im Wartungsbetrieb zu testen, d.h. Deine Kunde sehen die Wartungsseite, Du kannst aber die Websiten der Kunden ganz normal aufrufen?
viele Grüße
jack
Re: Apache / Wartungsseite einrichten
Was ist daran nicht realistisch. Gaukel deinem PC (Linux: /etc/hosts || Windows: C:Windowssystem32driversetchosts) einfach eine andere Namensauflösung vor. Dann zeigt http://www.example.com nicht mehr auf 192.168.0.1 sondern auf 192.168.0.2! Ergo ist es realistisch. Bei einer Portverlagerung tippst du zur Not halt den Port noch ein, das sollte nich die Welt sein und Hardlinks sind meist eh böse ;)matzewe01 wrote:Das mit der 2. IP Adresse ist jedoch die beste Lösung, da Du die Anwendung unter realistischen Bedidngen testen kannst. Hasrt links z.B. auf http://www.myhost.de/.... bleiben bei der Portverlagerung nicht testbar.
Gruß
dtdesign
Re: Apache / Wartungsseite einrichten
hallo deine lösung klingt nicht uninteressant.
eine zweite ip steht mir allerdings nicht zur verfügung.
hast du vielleicht eine ahnung wieso es mit mod_rewrite im globalen server-kontext nicht funktioniert?
viele grüße
jack
eine zweite ip steht mir allerdings nicht zur verfügung.
mit vpn hatte ich bis jetzt noch nie was zu tun, wäre es möglich, daß du die lösung etwas genauer beschreibst, vielleicht kennst Du evtl. einen guten Lik zu einem entsprechenden Howto oder ähnliches - ich kriege hier langsam die kriese :-)Keine 2. IP, dann versuche es mit einem VPN Tunnel und binde dich an eine lokale Adresse z.B. 127.0.0.2 (die Du für das VPN angegeben hast) Natürlich Deinen lokalen Rechner mit der dem hosts Eintrag austricksen
hast du vielleicht eine ahnung wieso es mit mod_rewrite im globalen server-kontext nicht funktioniert?
viele grüße
jack
Re: Apache / Wartungsseite einrichten
hallo,
ich bin ehrlich gesagt sehr überrascht, daß die ganze Geschichte offenbar so problematisch ist. Natürlich ist es nicht weiter schwer eine andere vHost-datei zu includen, ich halte es jedoch für wichtig, daß ich während der Wartungsarbeiten, Updates etc. Zugriff auf die Projekte habe bevor diese dann online gehen. Eine einfache Umleitung anhand der IP-Adresse wäre eigentlich die perfekte Lösung - keine zwei IP-Adressen, keine doppelten vhosts-dateien etc. Ich komme jedoch nicht dahinter wieso es nicht funktioniert - aber es muss doch irgendwie gehen, wozu sollte denn RewriteRule im server-kontext dann überhaupt gut sein?
viele grüße
jack
ich bin ehrlich gesagt sehr überrascht, daß die ganze Geschichte offenbar so problematisch ist. Natürlich ist es nicht weiter schwer eine andere vHost-datei zu includen, ich halte es jedoch für wichtig, daß ich während der Wartungsarbeiten, Updates etc. Zugriff auf die Projekte habe bevor diese dann online gehen. Eine einfache Umleitung anhand der IP-Adresse wäre eigentlich die perfekte Lösung - keine zwei IP-Adressen, keine doppelten vhosts-dateien etc. Ich komme jedoch nicht dahinter wieso es nicht funktioniert - aber es muss doch irgendwie gehen, wozu sollte denn RewriteRule im server-kontext dann überhaupt gut sein?
viele grüße
jack
Re: Apache / Wartungsseite einrichten
Am Besten Du fängst mit einer sauberen httpd.conf an, dann lösen sich viele Probleme wie von selbst. Nachfolgend mal der Weg zu einer sauberen httpd.conf, bitte nur Pfade und Modulnamen selbst anpassen:
In der vhosts.conf definierst Du noch Deine vHosts und nimmst hierzu den Default-vHost als Muster. Sobald diese httpd.conf angepasst ist (Pfade und Modulnamen) und Dein Apache damit läuft, kümmern wir uns um den Rest. Ohne gemeinsame saubere Basis hat die Problemsuche/lösung nämlich keinen Sinn...
Code: Select all
mkdir -p /srv/www/htdocs-secure
mkdir -p /etc/apache2/ssl
cd /etc/apache2/ssl
/etc/ssl/misc/CA.pl -newca
/etc/ssl/misc/CA.pl -newreq
/etc/ssl/misc/CA.pl -sign
openssl req -new > apache.csr
openssl rsa -in privkey.pem -out apache.key
openssl x509 -in apache.csr -out apache.crt -req -signkey apache.key -days 365
chmod 400 apache.{key,crt,csr} privkey.pem
cd ~/
mv /etc/apache2/httpd.conf /etc/apache2/httpd_original.conf
cat > /etc/apache2/httpd.conf << "EOF"
ServerRoot "/usr/lib/apache2"
PidFile "/var/run/apache2.pid"
LockFile "/var/run/apache2.lock"
Timeout 300
KeepAlive On
KeepAliveTimeout 15
MaxKeepAliveRequests 100
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 500
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 500
</IfModule>
Listen 80
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_lock_module modules/mod_dav_lock.so
#LoadModule dbd_module modules/mod_dbd.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule ident_module modules/mod_ident.so
#LoadModule imagemap_module modules/mod_imagemap.so
#LoadModule info_module modules/mod_info.so
#LoadModule logio_module modules/mod_logio.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule status_module modules/mod_status.so
#LoadModule unique_id_module modules/mod_unique_id.so
#LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule suexec_module modules/mod_suexec.so
User wwwrun
Group wwwrun
ServerTokens OS
ServerSignature On
UseCanonicalName On
<Directory "/">
Options -All +FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
ServerName www.domain.tld:80
ServerAdmin webmaster@domain.tld
DocumentRoot "/srv/www/htdocs"
<Directory "/srv/www/htdocs">
Options -All +FollowSymLinks
AllowOverride Options FileInfo AuthConfig Limit
Order allow,deny
Allow from all
</Directory>
DirectoryIndex index.html index.html.var index.php
AccessFileName .htaccess
<FilesMatch "^.ht">
Order allow,deny
Deny from all
</FilesMatch>
TypesConfig "/etc/mime.types"
DefaultType text/plain
<IfModule mime_magic_module>
MIMEMagicFile "/etc/apache2/magic"
</IfModule>
HostnameLookups Off
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
<IfModule logio_module>
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio
</IfModule>
CustomLog "/var/log/apache2/access_log" combined
ErrorLog "/var/log/apache2/error_log"
LogLevel warn
ReadmeName README.html
HeaderName HEADER.html
IndexOptions FancyIndexing VersionSort FoldersFirst IgnoreCase IgnoreClient NameWidth=* SuppressDescription XHTML
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t .svn
IndexOrderDefault Ascending Name
<IfModule cgid_module>
Scriptsock "/var/run/cgisock"
</IfModule>
ScriptAlias "/cgi-bin/" "/srv/www/cgi-bin/"
<Directory "/srv/www/cgi-bin">
Options -All +ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias "/icons/" "/srv/www/icons/"
<Directory "/srv/www/icons">
Options -All +MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
DefaultLanguage en
AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
ForceLanguagePriority Prefer Fallback
AddCharset us-ascii .ascii .us-ascii
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .arb .arabic
AddCharset ISO-8859-7 .iso8859-7 .grk .greek
AddCharset ISO-8859-8 .iso8859-8 .heb .hebrew
AddCharset ISO-8859-9 .iso8859-9 .latin5 .trk
AddCharset ISO-8859-10 .iso8859-10 .latin6
AddCharset ISO-8859-13 .iso8859-13
AddCharset ISO-8859-14 .iso8859-14 .latin8
AddCharset ISO-8859-15 .iso8859-15 .latin9
AddCharset ISO-8859-16 .iso8859-16 .latin10
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5.Big5 .big5 .b5
AddCharset cn-Big5 .cn-big5
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8 .koi8
AddCharset KOI8-E .koi8-e
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-U .koi8-u
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-7 .utf7
AddCharset UTF-8 .utf8
AddCharset UTF-16 .utf16
AddCharset UTF-16BE .utf16be
AddCharset UTF-16LE .utf16le
AddCharset UTF-32 .utf32
AddCharset UTF-32BE .utf32be
AddCharset UTF-32LE .utf32le
AddCharset euc-cn .euc-cn
AddCharset euc-gb .euc-gb
AddCharset euc-jp .euc-jp
AddCharset euc-kr .euc-kr
AddCharset EUC-TW .euc-tw
AddCharset gb2312 .gb2312 .gb
AddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2
AddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4
AddCharset shift_jis .shift_jis .sjis
AddType application/x-gzip .gz .tgz
AddType application/x-compress .Z
AddType image/x-icon .ico
AddType text/html .xhtml
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
AddHandler cgi-script .cgi .pl
AddHandler type-map var
#EnableMMAP off
#EnableSendfile off
Alias "/error/" "/srv/www/error/"
<Directory "/srv/www/error">
Options -All +IncludesNoExec
AllowOverride None
Order allow,deny
Allow from all
LanguagePriority en cs de es fr it ja ko nl pl pt-br ro sv tr
ForceLanguagePriority Prefer Fallback
AddOutputFilter Includes html
</Directory>
ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
ErrorDocument 410 /error/HTTP_GONE.html.var
ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
<IfModule info_module>
<IfModule status_module>
<Location "/server-status">
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
</Location>
ExtendedStatus On
<Location "/server-info">
SetHandler server-info
Order deny,allow
Deny from all
Allow from localhost
</Location>
</IfModule>
</IfModule>
<IfModule userdir_module>
UserDir public_html
<Directory "/home/*/public_html">
Options -All +SymLinksIfOwnerMatch +IncludesNoExec
AllowOverride FileInfo AuthConfig Limit Indexes
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
<IfModule suexec_module>
<Directory "/home/*/public_html/cgi-bin">
Options -All +ExecCGI
SetHandler cgi-script
</Directory>
</IfModule>
</IfModule>
<Location "/">
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/xml application/xhtml+xml
</Location>
<IfModule ssl_module>
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/var/run/ssl_scache(512000)
SSLSessionCacheTimeout 300
SSLMutex file:/var/run/ssl_mutex
<VirtualHost _default_:443>
ServerName www.domain.tld:443
ServerAdmin webmaster@domain.tld
DocumentRoot "/srv/www/htdocs-secure"
<Directory "/srv/www/htdocs-secure">
Options -All +FollowSymLinks
AllowOverride Options FileInfo AuthConfig Limit
Order allow,deny
Allow from all
</Directory>
ErrorLog "/var/log/apache2/ssl_error_log"
TransferLog "/var/log/apache2/ssl_access_log"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/etc/apache2/ssl/apache.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/apache.key"
<FilesMatch ".(cgi|shtml|pl|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/srv/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
CustomLog "/var/log/apache2/ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
</VirtualHost>
</IfModule>
NameVirtualHost *:80
<VirtualHost _default_:80>
ServerName www.domain.tld
ServerAdmin webmaster@domain.tld
DocumentRoot "/srv/www/htdocs"
<Directory "/srv/www/htdocs">
Options -All +FollowSymLinks
AllowOverride Options FileInfo AuthConfig Limit
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Include "/etc/apache2/vhosts.conf"
EOF
touch /etc/apache2/vhosts.conf
Re: Apache / Wartungsseite einrichten
Hallo,
die Konfiguration ist sauber. Habe erst vor wenigen Tagen Debian Etch und Apache 2 installiert - es sind alles standard Einstellungen, SSL wird momentan nicht verwendet. Alle mod_rewrite ist korrekt installiert und php5 läuft als modul.
hier ist meine komllette apache2.conf (einige Dateien die included werden habe ich der übersichtlichkeithalber auskommentiert und den Inhalt direkt reigeschrieben).
Wie gesagt die Config ist so gut wie im Ursprungszustand. Da wird auch nichts am ende auch nichts mehr included oder irgendwelche Parameter überschrieben.
Mal eine andere Frage, hast Du die folgende Lösung bei Dir getestet, funktioniert es auf deinem Server?
die Konfiguration ist sauber. Habe erst vor wenigen Tagen Debian Etch und Apache 2 installiert - es sind alles standard Einstellungen, SSL wird momentan nicht verwendet. Alle mod_rewrite ist korrekt installiert und php5 läuft als modul.
hier ist meine komllette apache2.conf (einige Dateien die included werden habe ich der übersichtlichkeithalber auskommentiert und den Inhalt direkt reigeschrieben).
Code: Select all
ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
PidFile /var/run/apache2.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
User www-data
Group www-data
AccessFileName .htaccess
<Files ~ "^.ht">
Order allow,deny
Deny from all
</Files>
TypesConfig /etc/mime.types
DefaultType text/plain
HostnameLookups Off
ErrorLog /var/log/apache2/error.log
LogLevel warn
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
# Include ports listing
#Include /etc/apache2/ports.conf
Listen 80
# Include generic snippets of statements
##Include /etc/apache2/conf.d/
AddDefaultCharset ISO-8859-1
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
ServerTokens Full
ServerSignature On
<IfModule alias_module>
Alias /icons/ "/usr/share/apache2/icons/"
<Directory "/usr/share/apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</IfModule>
<IfModule mod_autoindex.c>
#
# IndexOptions: Controls the appearance of server-generated directory
# listings.
#
IndexOptions FancyIndexing VersionSort HTMLTable NameWidth=*
#
# AddIcon* directives tell the server which icon to show for different
# files or filename extensions. These are only displayed for
# FancyIndexed directories.
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
ReadmeName README.html
HeaderName HEADER.html
IndexIgnore .??* *~ *# RCS CVS *,v *,t
</IfModule>
<IfModule mod_mime.c>
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw
</IfModule>
<IfModule mod_negotiation.c>
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
ForceLanguagePriority Prefer Fallback
</IfModule>
<IfModule mod_mime.c>
AddCharset us-ascii .ascii .us-ascii
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .arb .arabic
AddCharset ISO-8859-7 .iso8859-7 .grk .greek
AddCharset ISO-8859-8 .iso8859-8 .heb .hebrew
AddCharset ISO-8859-9 .iso8859-9 .latin5 .trk
AddCharset ISO-8859-10 .iso8859-10 .latin6
AddCharset ISO-8859-13 .iso8859-13
AddCharset ISO-8859-14 .iso8859-14 .latin8
AddCharset ISO-8859-15 .iso8859-15 .latin9
AddCharset ISO-8859-16 .iso8859-16 .latin10
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5 .b5
AddCharset cn-Big5 .cn-big5
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8 .koi8
AddCharset KOI8-E .koi8-e
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-U .koi8-u
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-7 .utf7
AddCharset UTF-8 .utf8
AddCharset UTF-16 .utf16
AddCharset UTF-16BE .utf16be
AddCharset UTF-16LE .utf16le
AddCharset UTF-32 .utf32
AddCharset UTF-32BE .utf32be
AddCharset UTF-32LE .utf32le
AddCharset euc-cn .euc-cn
AddCharset euc-gb .euc-gb
AddCharset euc-jp .euc-jp
AddCharset euc-kr .euc-kr
#Not sure how euc-tw got in - IANA doesn't list it???
AddCharset EUC-TW .euc-tw
AddCharset gb2312 .gb2312 .gb
AddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2
AddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4
AddCharset shift_jis .shift_jis .sjis
AddHandler type-map var
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
<IfModule mod_setenvif.c>
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4.0" force-response-1.0
BrowserMatch "Java/1.0" force-response-1.0
BrowserMatch "JDK/1.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
</IfModule>
NameVirtualHost xxx.xxx.xxx.xxx:80
DocumentRoot "/var/www"
UseCanonicalName Off
<Directory />
Options +FollowSymLinks
AllowOverride none
</Directory>
<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName testdomain.de
ServerAlias *.testdomain.de
DocumentRoot /var/www/vhosts/www-user/html/testdomain.de
SuexecUserGroup www-user www-data
<Directory "/var/www/vhosts/www-user/html/testdomain.de">
Options +FollowSymLinks
</Directory>
</VirtualHost>
RewriteLog "/var/log/apache2/mod_rewrite.log"
RewriteLogLevel 5
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten.html /var/www/vhosts/www-user/wartung/wartungsarbeiten.html [L]
Mal eine andere Frage, hast Du die folgende Lösung bei Dir getestet, funktioniert es auf deinem Server?
NameVirtualHost xxx.xxx.xxx.xxx:80
DocumentRoot "/var/www"
UseCanonicalName Off
<Directory />
Options +FollowSymLinks
AllowOverride none
</Directory>
<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName testdomain.de
ServerAlias *.testdomain.de
DocumentRoot /var/www/vhosts/www-user/html/testdomain.de
SuexecUserGroup www-user www-data
<Directory "/var/www/vhosts/www-user/html/testdomain.de">
Options +FollowSymLinks
</Directory>
</VirtualHost>
RewriteLog "/var/log/apache2/mod_rewrite.log"
RewriteLogLevel 5
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten.html /var/www/vhosts/www-user/wartung/wartungsarbeiten.html [L]
Re: Apache / Wartungsseite einrichten
AddDefaultCharset setzt man nicht, raus damit.jack99 wrote:Code: Select all
# Include generic snippets of statements ##Include /etc/apache2/conf.d/ AddDefaultCharset ISO-8859-1
Wie folgt abändern:jack99 wrote:Code: Select all
NameVirtualHost xxx.xxx.xxx.xxx:80 DocumentRoot "/var/www" UseCanonicalName Off <Directory /> Options +FollowSymLinks AllowOverride none </Directory> <VirtualHost xxx.xxx.xxx.xxx:80> ServerName testdomain.de ServerAlias *.testdomain.de DocumentRoot /var/www/vhosts/www-user/html/testdomain.de SuexecUserGroup www-user www-data <Directory "/var/www/vhosts/www-user/html/testdomain.de"> Options +FollowSymLinks </Directory> </VirtualHost> RewriteLog "/var/log/apache2/mod_rewrite.log" RewriteLogLevel 5 RewriteEngine On RewriteCond %{REMOTE_ADDR} !^88.76.202.104 RewriteRule !wartungsarbeiten.html /var/www/vhosts/www-user/wartung/wartungsarbeiten.html [L]
Code: Select all
UseCanonicalName On
<Directory "/">
Options -All +FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
ServerName domain.tld:80
ServerAdmin webmaster@domain.tld
DocumentRoot "/var/www"
NameVirtualHost *:80
<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName domain.tld
ServerAlias *.domain.tld
ServerAdmin webmaster@domain.tld
DocumentRoot "/var/www/vhosts/www-user/html/domain.tld"
<Directory "/var/www/vhosts/www-user/html/domain.tld">
Options -All +FollowSymLinks
AllowOverride Options FileInfo AuthConfig Limit
Order allow,deny
Allow from all
</Directory>
SuexecUserGroup www-user www-data
RewriteEngine On
RewriteLog "/var/log/apache2/mod_rewrite.log"
RewriteLogLevel 5
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten.html http://domain.tld/wartungsarbeiten.html [R,L]
</VirtualHost>
Re: Apache / Wartungsseite einrichten
@joe user
erst mal danke für Deine Hilfe.
Das Problem ist ja möglichst einfach eine globale Umleitung für alle vHosts zu einer Wartungsarbeiten-Seite zu realisieren. Das Besondere: damit der Admin die Möglichkeit hat die vHosts während der Wartungsarbeiten zu testen, sollten Anfragen von bestimmten IP-Adressen von der Umleitung ausgeschlossen werden. Natürlich sollte die Handhabung möglichst einfach sein, d.h. am besten so eine Art Schalter/Weiche für Normal- bzw. Wartungsbetrieb des Servers den man nach Bedarf umlegen kann ohne zig andere Sachen zuvor beachten oder ändern zu müssen.
Eine Lösung mittels
wäre mit dem Nachteil verbunden, dass diese Einstellungen von .htaccess-Dateien komplett überschrieben werden können. Es sei denn man würde keine .htaccess Dateien zulassen – dies wäre jedoch eine für viele Webmaster unakzeptable Einschränkung.
Eine andere Idee ist eine IP-abhängige Umleitung mittels mod_rewrite wie folgt:
Die Idee war dabei die Rewrite-Direktiven im globalen Server-Kontext zu verwenden (nicht innerhalb der vHost, denn dazu wäre ja eine entsprechende Ergänzung bei allen vhsost erforderlich) damit die Anfrage noch vor den vHosts verarbeitet und die Umleitung sofort ausgeführt werden kann. Obwohl die Umleitung laut meinem mod_rewrite.log richtig verarbeitet wurde, fand diese trotzdem nicht statt. Warum, ist mir noch nicht ganz klar?
Nun hat joe vorgeschlagen, die Rewrite-Direktiven direkt in den VirtualHost-Containern einzufügen.
Positiv: die Umleitung funktioniert wie gewünscht
Nachteil: hoher Arbeitsaufwand bei vielen vHosts wenn man jedes mal beim Wechsel des Serverbetriebs alles ändern muss.
Lösung: anstatt die Rewrite-Direktiven direkt in alle vHosts einzufügen fügt man am Ende eines jeden VirtualHost eine include-Direktive mit dem Pfad zu einer Datei z.B. wartung.conf
die Datei wartung.conf hat dann im normalen Serverbetrieb den folgenden Inhalt:
wartung.conf
D.h. die Umleitung ist komplett deaktiviert.
Im Wartungsbetrieb werden nur die 3 Rauten entfernt und bei Bedarf die von Umleitung ausgeschlossene IP oder IP´s ergänzt:
Positiv: - einfache Umschaltung zwischen Wartungs- und Normalbetrieb
- Admin kann vHosts im Wartungsbetrieb testen
- Keine Änderungen an den vHost-Dateien, keine doppelten Test-vHosts-Dateien, keine weiteren IP-Adressen oder ähnliches erforderlich
- .htaccess und AllowOverride müssen nicht beachtet werden
Negativ: - es muss einmalig bei allen vHosts „include /etc/apache2/wartung.conf" eingefügt werden.
Vielen Dank noch mal an alle die sich an der Diskussion aktiv beteiligt haben. Ich denke unter dem Strich ist eine wirklich vernünftige Lösung rausgekommen.
Vielleicht hat ja jemand noch eine bessere Idee ;-)
Viele Grüße
jack
erst mal danke für Deine Hilfe.
Das Problem ist ja möglichst einfach eine globale Umleitung für alle vHosts zu einer Wartungsarbeiten-Seite zu realisieren. Das Besondere: damit der Admin die Möglichkeit hat die vHosts während der Wartungsarbeiten zu testen, sollten Anfragen von bestimmten IP-Adressen von der Umleitung ausgeschlossen werden. Natürlich sollte die Handhabung möglichst einfach sein, d.h. am besten so eine Art Schalter/Weiche für Normal- bzw. Wartungsbetrieb des Servers den man nach Bedarf umlegen kann ohne zig andere Sachen zuvor beachten oder ändern zu müssen.
Eine Lösung mittels
Code: Select all
<Directory />
Options FollowSymLinks
AllowOverride none
Order allow,deny
Deny from all
Allow from 88.76.202.104
</Directory>
Eine andere Idee ist eine IP-abhängige Umleitung mittels mod_rewrite wie folgt:
Code: Select all
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.206.188
RewriteRule !wartungsarbeiten.html /var/www/wartung/wartungsarbeiten.html [L]
Nun hat joe vorgeschlagen, die Rewrite-Direktiven direkt in den VirtualHost-Containern einzufügen.
Positiv: die Umleitung funktioniert wie gewünscht
Nachteil: hoher Arbeitsaufwand bei vielen vHosts wenn man jedes mal beim Wechsel des Serverbetriebs alles ändern muss.
Lösung: anstatt die Rewrite-Direktiven direkt in alle vHosts einzufügen fügt man am Ende eines jeden VirtualHost eine include-Direktive mit dem Pfad zu einer Datei z.B. wartung.conf
Code: Select all
<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName testdomain.de
ServerAlias *.testdomain.de
DocumentRoot /var/www/vhosts/www-user/html/testdomain.de
SuexecUserGroup www-user www-data
<Directory "/var/www/vhosts/www-user/html/testdomain.de">
Options +FollowSymLinks
</Directory>
include /etc/apache2/wartung.conf
</VirtualHost>
wartung.conf
Code: Select all
#RewriteEngine On
#RewriteCond %{REMOTE_ADDR} !^88.76.206.188
#RewriteRule !wartungsarbeiten.html /var/www/wartung/wartungsarbeiten.html [L]
Im Wartungsbetrieb werden nur die 3 Rauten entfernt und bei Bedarf die von Umleitung ausgeschlossene IP oder IP´s ergänzt:
Code: Select all
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.206.188|88.76.206.189|88.76.206.190
RewriteRule !wartungsarbeiten.html /var/www/wartung/wartungsarbeiten.html [L]
- Admin kann vHosts im Wartungsbetrieb testen
- Keine Änderungen an den vHost-Dateien, keine doppelten Test-vHosts-Dateien, keine weiteren IP-Adressen oder ähnliches erforderlich
- .htaccess und AllowOverride müssen nicht beachtet werden
Negativ: - es muss einmalig bei allen vHosts „include /etc/apache2/wartung.conf" eingefügt werden.
Vielen Dank noch mal an alle die sich an der Diskussion aktiv beteiligt haben. Ich denke unter dem Strich ist eine wirklich vernünftige Lösung rausgekommen.
Vielleicht hat ja jemand noch eine bessere Idee ;-)
Viele Grüße
jack
Re: Apache / Wartungsseite einrichten
Ich stand grad selber vor dem Problem, eine allgemeine Wartungsseite ein zu binden.
-> Das aktivieren und deaktivieren passiert hierbei über ein Flagfile /etc/wartung.
Existiert die Datei, greift die Weiterleitung auf die Wartungsseite.
Wir diese entfernt geht wieder alles wie gewohnt.
-> Das aktivieren und deaktivieren passiert hierbei über ein Flagfile /etc/wartung.
Existiert die Datei, greift die Weiterleitung auf die Wartungsseite.
Wir diese entfernt geht wieder alles wie gewohnt.
Code: Select all
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.206.188|88.76.206.189|88.76.206.190
RewriteCond /etc/wartung -f
RewriteRule !wartungsarbeiten.html /var/www/wartung/wartungsarbeiten.html [L]
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.