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.
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.
# /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
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> ...
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
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