Den Portal Manager mit benannten virtuellen Hosts verwenden

Mit CMS Fiona können mehrere Websites auf benannten virtuellen Hosts (engl. "name-based virtual hosts") betrieben werden. Die Websites werden als separate Instanzen mit dem CMS erstellt und gepflegt und vom Portal Manager dynamisch ausgeliefert. Es ist möglich, für mehrere virtuelle Hosts die gleichen Instanzen zu verwenden.

Voraussetzungen und Funktionsweise

Zum Betrieb der virtuellen Hosts werden ein Apache Webserver mit mod_jk, der Trifork Application Server sowie unser Portal Manager benötigt.

Die hereinkommenden Requests für die im Apache konfigurierten virtuellen Hosts sollen zunächst mittels mod_jk zum Trifork-Server weitergeleitet werden. Hierzu dient in der Apache-Konfiguration die Direktive

  jkMount /* triforkWorker

Der Trifork-Server wiederum soll die Requests an die Portal-Manager-Webapplikation weiterleiten, die mittels ihrer Konfiguration einem Hostnamen den entsprechenden Content zuordnet. Hierfür wird das Konfigurationselement VirtualHostConfig verwendet.

Da es in der Portal-Manager-Konfiguration nur ein Dokumentenverzeichnis (documentSource) für alle virtuellen Hosts gibt, wird dieses auf ein beliebiges Verzeichnis gesetzt, in dem dann für jeden Host ein symbolischer Link angelegt wird, der auf den Content zeigt, der zu dem jeweiligen Host gehört.

Beispielkonfiguration

Apache

  # /etc/httpd/httpd.conf
  ...
  NameVirtualHost 10.1.110.40:80
  NameVirtualHost 10.1.110.40:443
  <VirtualHost 10.1.110.40:80>
    ServerName www.example.com
    ServerAlias example.com
    ErrorLog  /var/log/httpd/error_log
    CustomLog /var/log/httpd/www.example.com-access_log combined    
    CustomLog /var/log/httpd/www.example.com-redir_log redirectlog
    JkMount /* triforkWorker
    ...
  </VirtualHost>
  <VirtualHost 10.1.110.40:80>
    ServerName www.example.org
    ErrorLog  /var/log/httpd/error_log
    CustomLog /var/log/httpd/www.example.org-access_log combined
    JkMount /* triforkWorker
  </VirtualHost>
   
  # /etc/httpd/workers.properties

  worker.list=triforkWorker
  # Set properties for triforkWorker (ajp13)
  worker.triforkWorker.type=ajp13
  worker.triforkWorker.host=localhost
  worker.triforkWorker.port=8009
  worker.triforkWorker.lbfactor=250
  worker.triforkWorker.cachesize=50
  worker.triforkWorker.cache_timeout=300
  worker.triforkWorker.socket_keepalive=1
  worker.triforkWorker.recycle_timeout=300

Portal Manager

Für sämtliche virtuellen Hosts wird hier ein einziger Portal Manager verwendet. Wenn man in der Apache-Konfiguration mehrere workers definiert, lassen sich die virtuellen Hosts auch auf mehrere Portal Manager aufteilen. Dies könnte aus Gründen der Performance sinnvoll sein, wenn die Portal Manager auf unterschiedlichen Rechnern laufen.

  # /opt/Infopark/CMS-Fiona/instance/internet/webapps/PM/WEB-INF/pm.xml
  ...
  <bean id="hostConfig" class="com.infopark.pm.VirtualHostConfig">
    <property name="properties">
      <props>
        <prop key="example_org.locales">de</prop>
        <prop key="example_org.http.enable">true</prop>
        <prop key="example_org.http.host">www.example.org</prop>
        <prop key="example_org.http.port">80</prop>
        <prop key="example_com.locales">en</prop>
        <prop key="example_com.http.enable">true</prop>
        <prop key="example_com.http.host">www.example.com</prop>
        <prop key="example_com.http.port">80</prop>
      </props>
    </property>
  </bean>
  ...
  <bean id="documentSource" class="com.infopark.pm.doc.WebappDocumentSource">
    <property name="documentSource">
      <bean class="com.infopark.pm.FileDocumentSource">
        <property name="documentRoot" value="/var/www/vhosts" />
        <property name="inputEncoding" value="UTF-8" />
      </bean>
    </property>
    <property name="inputEncoding" value="ISO-8859-1" />
  </bean>
  ...

Symbolische Links anlegen

Anschließend werden die symbolischen Links in dem Verzeichnis angelegt, das als documentSource angegeben wurde.

  cd /var/www/vhosts
  ln -s /opt/Infopark/CMS-Fiona/instance/internet/export/online/docs example_org
  ln -s /opt/Infopark/CMS-Fiona/instance/internet/export/online/docs example_com

Portal Manager deployen

Abschließend muss der Portal Manager neu deployed werden, damit die an seiner Konfiguration vorgenommenen Änderungen wirksam werden. Führen Sie dazu den folgenden Befehl aus dem betreffenden Instanzenverzeichnis aus:

  ./instance/instancename/bin/rc.npsd deploy PM