Deutsche Zope User Group
Gast 3 Benutzer online
DZUG-News

Apache und Zope

Frage:

Wie h�nge ich meinen Zope hinter einen Apache mittels virtual Hosts?

Antwort:

Damit Zope und Apache richtig zusammenspielen, muss zun�chst im Zope Root Folder �ber das ZMI ein VHM angelegt werden. Die ID des VHM ist frei w�hlbar, es sollte aber nicht mehr als ein VHM angelegt werden. Ein VHM schreibt alle von Zope generierten URLs anhand von Informationen um, die ihm �ber spezielle URL-Pfadelemente durchgereicht wurden. Mit Hilfe von Apache rewrite Regeln k�nnen diese speziellen Elemente in die URL eingef�gt werden. In den Mappings des VHM braucht nichts eingetragen zu werden. Die Mapping Option wird nur ben�tigt, wenn virtuelles Hosting direkt mit einem standalone-Zope umgesetzt werden soll.

Im Zope Startscript sollte der Zope Server dann mit -a 127.0.0.1 an das loopback Interface gebunden werden, damit die nachfolgenden Apache Regeln nicht mit einem direkten Aufruf �ber die �ffentliche IP (http://129.70.34.102:8080) umgangen werden k�nnen.
Als n�chstes m�ssen in der /etc/apache/httpd.conf des Apache die Module mod_rewrite und mod_proxy geladen werden. Das mod_rewrite Modul bietet die M�glichkeit, interne Aliase und externe Redirects auf der Basis regul�rer Ausdr�cke zu erzeugen. Es ist f�r jeden virtuellen Host explizit zu aktivieren. Das mod_proxy Modul erweitert den Apache um Proxyfunktionalit�ten. Greift ein Client auf ein Objekt unterhalb der Adresse https://dzug.org zu, wird der Request intern auf http://localhost:8080/dzug/ weitergeleitet, wobei in der Adresszeile des Browsers die eingangs durch den Client angeforderte Adresse zu sehen ist, und der Client somit nicht merkt, dass seine Seiten in Wahrheit von dem lokal laufenden Zope ausgeliefert werden. Die entsprechenden Eintr�ge in die /etc/apache/httpd.conf:

LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so
LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so
Ein namenbasierter virtualer Host k�nnte z.B. so aussehen:
NameVirtualHost 129.70.34.102:80

Die NameVirtualHost Anweisung konfiguriert eine IP zur Benutzung f�r (mehrere) virtuelle Server. Damit beim Start des Apaches keine DNS-Abfragen gemacht werden m�ssen, sollten in der NameVirtualHost-Anweisung ausschlie�lich IP-Adressen verwendet werden.

Um dem VHM mitzuteilen, dass es das Protokoll auf HTTP und den Host auf dzug.org setzen soll, f�gen wir �ber die rewrite Rules ein �VirtualHostBase�, das Protokoll und den Host in den URL-Pfad ein. Durch den �VirtualHostBase�-Zusatz wei� das VHM, dass es �berhaupt in Aktion treten soll. Indem wir ein �VirtualHostRoot� direkt nach dem /dzug Ordnernamen einf�gen, behandelt das VHM den /dzug Ordner als root Folder des virtuellen Hosts. Um also den im /dzug Folder liegenden Content nach au�en �ber dzug.org zur Verf�gung zu stellen, verwenden wir diese Zeilen in der /etc/apache/httpd.conf:


  ServerName dzug.org
  ServerAlias dzug.org

  RewriteEngine On

  RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/\
  http/dzug.org:80/dzug/VirtualHostRoot/$1 [P]
  [...]


Den \ (Backslash) am Ende der Zeilen braucht man nur, wenn in der Config an dieser Stelle auch ein Zeilenumbruch ist!

Wenn der Apache jetzt einen zweiten virtuellen Server unter derselben IP beheimaten soll, f�gt man einfache folgende Zeilen hinzu:


  ServerName jura.uni-bielefeld.de
  [...]

Das obige RewriteRule-Beispiel l�sst sich auch mit dem mod_proxy Modul umsetzen:
  ProxyPass / http://localhost:8080/VirtualHostBase/\
  http/zope.dzug.org:80/VirtualHostRoot/

  ProxyPassReverse / http://localhost:8080/VirtualHostBase/\
  http/zope.dzug.org:80/VirtualHostRoot/

Dadurch dass wir den Zope mit �a 127.0.0.1 an das lokale loopback gebunden haben und https://dzug.org/manage durch den obigen virtuellen Hosts /dzug/manage/ bedeutet, haben wir keinen externen Zugriff mehr auf den Zope root Ordner im ZMI. Wir richten uns also noch einen virtuellen Host unter der Subdomain zope.dzug.org ein, der uns wieder einen uneingeschr�nkten ZMI-Zugang verschafft:


  ServerName zope.dzug.org
  RewriteEngine On

  RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/\
  http/zope.dzug.org:80/VirtualHostRoot/$1 [P]
  [...]

Wesentlicher Unterschied zum obigen Beispiel ist, dass zwischen �zope.dzug.org:80� und �VirtualHostRoot� kein Ordnernamen eingef�gt wurde und damit der ZMI root Ordner zum root Ordner des virtuellen Hosts wird.

Zu beachten ist, dass ab Apache 1.3.x die Cachingfunktionen aus dem Modul mod_proxy herausgenommen und in ein neues Modul (mod_cache) integriert wurden. Wem es also explizit auf Proxy-Cache (Webcache) ankommt, sollte sich n�her mit dem mod_cache Modul oder Squid besch�ftigen.

Siehe auch FAQs:

Rubriken: Virtual Hosting    FAQ angelegt von: mschopen, Letzte �nderung: 30.04.2003 23:26 Uhr