Apache Tomcat – kontener aplikacji webowych, który obecnie jest rozwijany przez fundację Apache. Umożliwia uruchamianie aplikacji internetowych w technologiach Java Servlets oraz Java Server Pages.
Hosty wirtualne (virtual hosts) to podstawowa jednostka reprezentująca stronę lub domenę. Odpowiednie utworzenie hostów pozwala na uruchomienie więcej niż jednej aplikacji w ramach tego samego kontenera.
Wyobraźmy sobie sytuację, w której mamy jedną maszynę z zainstalowanym oprogramowaniem i chcemy na niej hostować dwie aplikacje. Dodatkowym wymaganiem jest, aby każda z nich była dostępna pod innym adresem, np. virtualhost1.localhost oraz virtualhost2.localhost . Celem konfiguracji hostów jest „wskazanie serwerowi” jakie pliki powinny być ładowane przy próbie pobrania zawartości dla każdej z nich.
Edycja konfiguracji serwera Apache Tomcat
Na samym początku musimy dodać hosty do konfiguracji serwera. W tym celu otwórzmy plik server.xml , który znajduje się w folderze conf w lokalizacji instalacji Tomcat’a. Przedstawiony poniżej kod należy umieścić w sekcji <Engine> .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<Host name="virtualhost1.localhost" appBase="webapps/virtualhost1" unpackWARs="true" autoDeploy="true"> <Alias>virtualhost1.localhost</Alias> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs/virtualhost1" prefix="virtualhost1_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> <Host name="virtualhost2.localhost" appBase="webapps/virtualhost2" unpackWARs="true" autoDeploy="true"> <Alias>virtualhost2.localhost</Alias> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs/virtualhost2" prefix="virtualhost2_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> |
Obie konfiguracje są bardzo podobne, różnią się jedynie numerami hostów.
Sekcja host
name | Nazwa hosta. |
appBase | Lokalizacja plików aplikacji, która ma być dostępna przez dany host. |
unpackWARs | Flaga informująca o tym, że chcemy, aby nasza aplikacja, która zostanie załadowana jako archiwum War, została automatycznie rozpakowana. |
autoDeploy | Flaga wskazująca, że chcemy aby nasza aplikacja została automatycznie zbudowana podczas gdy Tomcat będzie uruchomiony. Domyślnie ustawione jest true. |
Sekcja alias to sekcja określająca adres żądań obsługiwanych przez danych host.
W sekcji values określamy konfigurację logów, które będą zapisywane przez nasz kontener.
className | Nazwa klasy implementująca interfejs Value. |
directory | Lokalizacja, w której będą zapisywane pliki z logami. |
prefix | Prefix dodawany do nazwy plików. |
suffix | Suffix dodawany do nazwy plików – w tym przypadku rozszerzenie pliku. |
pattern | Wzór zapisu pojedynczej linii pliku. |
Mając dodaną konfigurację możemy zapisać plik server.xml i przejść do dalszych czynności.
Podmiana DNS
Kolejnym krokiem konfiguracji jest nadpisanie adresów DNS dla obu hostów. W tym celu musimy edytować plik hosts znajdujący się pod adresem:
- Windows – C:/Windows/System32/Drivers/etc/
- Linux – /etc/hosts/
Polecenie przekierowania wydajemy dopisując dwie linijki
1 2 |
127.0.0.1 virtualhost1.localhost 127.0.0.1 virtualhost2.localhost |
Obie nazwy hostów podpinamy pod IP naszego lokalnego serwera czyli 127.0.0.1 .
Zapiszmy edytowany plik. Pamiętaj, że plik ten jest plikiem systemowym, więc do jego edycji potrzebujesz uprawnień administratora.
Zawartość stron
Etap konfiguracji mamy już za sobą. Teraz musimy sprawdzić czy wszystko działa tak jak założyliśmy. W tym celu utwórz dwa pliki index.html z następującymi zawartościami
1 2 3 4 5 6 7 8 |
<html> <head> <title>Virtual host number 1</title> </head> <body> Virtual host number 1 </body> </html> |
1 2 3 4 5 6 7 8 |
<html> <head> <title>Virtual host number 2</title> </head> <body> Virtual host number 2 </body> </html> |
Oba pliki powinniśmy umieścić odpowiednio w folderach webapps/virtualhost1/ROOT/ oraz webapps/virtualhost2/ROOT/ . Folder ROOT to folder, z którego ładowany jest główny kontekst aplikacji.
Jeżeli poprawnie skonfigurowałeś hosty to przy wejściu na adresy http://virtualhost1.localhost:8080 oraz http://virtualhost2.localhost:8080 zobaczysz komunikaty Virtual host number 1 oraz Virtual host number 2.
Przydatne linki
- Pełna dokumentacja klasy apache.catalina.valves.AccessLogValve znajduje się tutaj – link do tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/valves/AccessLogValve.html
- Pełna dokumentacja konfiguracji hostów Tomcat znajduje się pod adresem tomcat.apache.org/tomcat-7.0-doc/config/host.html
- tomcat.apache.org/tomcat-7.0-doc/config/context.html
Comments