Hvordan sette opp Apache som en frontend med mod_proxy_ajp mot en eller flere Tomcat instanser?
Dette er testet på Ubuntu 12.04.
Installer Apache og Tomcat:
sudo apt-get install apache2 tomcat7 tomcat7-examples
Jeg installerte også tomcat7-examples for å kunne sjekke at alt virker. Ville ikke installert det på en produsksjonsserver.
Konfigurer Tomcat
Åpne /etc/tomcat7/server.xml. Finn Connector og sørg for at den ikke er kommentert ut. Slett <!– og -> før og etter:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Lagre og restart Tomcat7.
Når alt er testet og klart kan man gå tilbake hit og kommentere ut <Connector port=»8080″ …
Men når man setter opp kan det være en fordel å kunne sjekke at Tomcat7 kjører ved å åpne http://your_server:8080/
Konfigurer Apache
Sett opp mod_proxy_ajp:
a2enmod proxy_ajp
Restart Apache.
Åpnet /etc/apache2/sites-enabled/000-default og la til:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /examples ajp://localhost:8009/examples
ProxyPassReverse /examples ajp://localhost:8009/examples
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Restart Apache og åpne http://your_server/examples
I dette eksemplet så kjører Tomcat på samme server. Hvis du ønsker å kjøre Tomcat på en annen server, så må man endre localhost til IP eller dns på Tomcat server.
Her er ett eksempel med VirtuelHost og lastbalansering. Tomcat applikasjonen kjører på to server for lastbalansering. Det gir også mulighet til å ta ned en server om gangen for sikkerhetsoppdateringer.
<VirtualHost *:80>
ServerName www.eksempel.no
DocumentRoot /var/www/html/eksempel.no
ProxyRequests Off
ProxyPreserveHost On
<Proxy balancer://MyCluster>
BalancerMember ajp://192.168.4.151:8009
BalancerMember ajp://192.168.4.152:8009
</Proxy>
<Location />
ProxyPass balancer://MyCluster/ stickysession=JSESSIONID|jsessionid nofailover=On
</Location>
</VirtualHost>
Legg merke til at:
stickysession=JSESSIONID|jsessionid nofailover=On
sannsynligvis ikke vil passe for alle.