Einführung / Konfiguration des FirstSpirit-Servers / Einbinden in externen Webserver / Apache HTTP-Server mit Servlet-Engine Tomcat

Apache HTTP-Server mit Servlet-Engine Tomcat

Der Apache HTTP-Server wird in dieser Konfiguration in Verbindung mit der Servlet-Engine Tomcat verwendet. Als Protokoll zwischen Apache und Tomcat wird AJP eingesetzt.

Zurzeit existieren als AJP-Connector für Apache mod_jk und mod_proxy_ajp. In diesem Abschnitt wird die Verwendung von mod_proxy_ajp beschrieben, da dieses Modul seit Version 2.2 zum Lieferumfang gehört und somit die Installation gegenüber mod_jk vereinfacht. Eine Lastverteilung (Loadbalancing) auf mehrere Servlet-Engines kann mit beiden Modulen realisiert werden (siehe Lastverteilung auf mehrere Servlet-Engines).

Die Konfigurationsumgebung des Apache ist abhängig vom Betriebssystem und wird meistens über mehrere Konfigurationsdateien verteilt. Eine übliche Konvention ist, für allgemeine Parameter die Datei /etc/apache2/httpd.conf zu verwenden, für Modulkonfiguration das Verzeichnis /etc/apache2/mods-available und für jeden virtuellen Webserver eine Datei unter /etc/apache2/sites-available.

Für FirstSpirit sollte ein eigener virtueller Webserver verwendet werden, der über folgende Einträge so konfiguriert wird, dass HTTP-Anfragen für die FirstSpirit-Webanwendungen über mod_proxy_ajp an Tomcat weitergeleitet werden. Von den unter Tomcat installierten FirstSpirit-Webanwendungen wird dann bei Bedarf automatisch zusätzlich eine interne HTTP-Verbindung zur Auslieferung spezieller Dateitypen wie PHP oder ASP aufgebaut.

In dem Konfigurationsbeispiel müssen bei den mit „EXAMPLE“ markierten Zeilen jeweils die Pfade und Adressen an die lokale Konfiguration angepasst werden. Der Eintrag „# EXAMPLE“ muss anschließend entfernt werden, ansonsten werden Syntaxfehler beim Start des Webservers angezeigt.

Modulkonfiguration PHP

LoadModule php5_module modules/libphp5.so             # EXAMPLE
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

Modulkonfiguration mod_proxy_ajp (Beispiel für Apache HTTPD 2.2)

LoadModule proxy_module modules/mod_proxy.so                   # EXAMPLE
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so # EXAMPLE
LoadModule rewrite_module modules/mod_rewrite.so # EXAMPLE
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so # EXAMPLE

ProxyRequests Off
<Proxy *>
AddDefaultCharset off
order deny,allow
deny from all
</Proxy>

Virtueller Webserver:

<VirtualHost *:80>
ServerName fs5.yourdomain.net # EXAMPLE
ServerAlias fs5 # EXAMPLE

LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"
\"%{COOKIE}i\" %{BALANCER_WORKER_ROUTE}e %D" route_and_requesttime

CustomLog /var/log/apache2/fs5.access.log route_and_requesttime # EXAMPLE
ErrorLog /var/log/apache2/fs5.error.log # EXAMPLE

ServerSignature off
UseCanonicalName off
AddDefaultCharset off
ProxyRequests off
RewriteEngine on

DocumentRoot /opt/tomcat/webapps # EXAMPLE

DirectoryIndex index.html index.jsp index.php

# Protect configuration files.
<LocationMatch "\.htaccess|/WEB-INF/">
order deny,allow
deny from all
</LocationMatch>

# Protect FirstSpirit previews, to be accessible
# from Servlet-Engine only, not from Web-Browser.
<LocationMatch preview_cache>
order deny,allow
deny from all
# All LAN addresses where Servlet-Engine is connecting from:
allow from 127.0.0.1
allow from 10.11.12.13 # EXAMPLE
allow from 172.111.12.13 # EXAMPLE
</LocationMatch>

# status monitor for mod_proxy and balancer
<Location /balancer-manager>
SetHandler balancer-manager
order deny,allow
deny from all
# allow access from administation network only
allow from 192.168.1. # EXAMPLE
</Location>

<Proxy balancer://fsajp>
BalancerMember ajp://localhost:8009 retry=10 connectiontimeout=10 ping=5 ttl=1800
timeout=1200 # EXAMPLE
</Proxy>

# forward requests for FirstSpirit-Webapps to Servlet-Engine
RewriteCond %{REQUEST_URI} !^/balancer-manager
RewriteCond %{REQUEST_URI} !^/manager/
RewriteCond %{REQUEST_URI} !^/server-status
RewriteCond %{REQUEST_URI} !^/fs5preview(_[0-9]+)?/preview_cache
RewriteCond %{REQUEST_URI} !^/fs5webedit(_[0-9]+)?/preview_cache
RewriteRule ^/(.*) balancer://fsajp/$1 [proxy,last]

</VirtualHost>

Modulkonfiguration mod_proxy_ajp (Beispiel für Apache HTTPD 2.4)

LoadModule alias_module modules/mod_alias.so                             # EXAMPLE
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so # EXAMPLE
LoadModule proxy_module modules/mod_proxy.so # EXAMPLE
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so # EXAMPLE
LoadModule rewrite_module modules/mod_rewrite.so # EXAMPLE
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so # EXAMPLE
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so # EXAMPLE

ProxyRequests Off
<Proxy *>
AddDefaultCharset off
Require all denied
</Proxy>

Virtueller Webserver:

<VirtualHost *:80>
ServerName fs5.yourdomain.net # EXAMPLE
ServerAlias fs5 # EXAMPLE

LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"
\"%{COOKIE}i\" %{BALANCER_WORKER_ROUTE}e %D" route_and_requesttime

CustomLog /var/log/apache2/fs5.access.log route_and_requesttime # EXAMPLE
ErrorLog /var/log/apache2/fs5.error.log # EXAMPLE

ServerSignature off
UseCanonicalName off
AddDefaultCharset off
ProxyRequests off
RewriteEngine on

DocumentRoot /opt/tomcat/webapps # EXAMPLE

DirectoryIndex index.html index.jsp index.php

<Location />
Require all granted
</Location>

# Protect configuration files.
<LocationMatch "\.htaccess|/WEB-INF/">
Require all denied
</LocationMatch>

# Protect FirstSpirit previews, to be accessible
# from Servlet-Engine only, not from Web-Browser.
<LocationMatch preview_cache>
# All LAN addresses where Servlet-Engine is connecting from:
Require local
Require ip 10.11.12.13 # EXAMPLE
Require ip 172.111.12.13 # EXAMPLE
</LocationMatch>

# status monitor for mod_proxy and balancer
<Location /balancer-manager>
SetHandler balancer-manager
# allow access from administation network only
Require ip 192.168.1.0/24 # EXAMPLE
</Location>

<Proxy balancer://fsajp>
BalancerMember ajp://localhost:8009 retry=10 connectiontimeout=10 ping=5 ttl=1800
timeout=1200 # EXAMPLE
</Proxy>

RewriteCond %{REQUEST_URI} !^/balancer-manager
RewriteCond %{REQUEST_URI} !^/manager/
RewriteCond %{REQUEST_URI} !^/server-status
RewriteCond %{REQUEST_URI} !^/fs5preview(_[0-9]+)?/preview_cache
RewriteCond %{REQUEST_URI} !^/fs5webedit(_[0-9]+)?/preview_cache
RewriteRule ^/(.*) balancer://fsajp/$1 [proxy,last]

</VirtualHost>

© 2005 - 2024 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2024.5 | Datenschutz