Apache Tomcat jest kontenerem serwletów i serwerem WWW, który jest używany do obsługi aplikacji Java. Tomcat jest otwartą implementacją technologii Java Servlet i JavaServer Pages, wydaną przez Apache Software Foundation. W tym tutorialu opiszemy podstawową instalację i konfigurację Tomcat 8 na serwerze Ubuntu 16.04.
- Wymagania
- Krok 1: Instalacja Java
- Krok 2: Tworzenie Użytkownika Tomcat
- Krok 3: Instalacja Tomcat
- Krok 4: Aktualizacja uprawnień
- Krok 5: Tworzenie Systemd Service File
- Krok 6: Ustawienie zapory i testowanie serweru Tomcat
- Krok 7: Konfiguracja Tomcat Web Management Interface
- Krok 8: Dostęp do interfejsu WWW
- Wniosek
Wymagania
Przed rozpoczęciem pracy, należy zalogować się jako użytkownik inny niż root, z ustawionymi na serwerze uprawnieniami sudo. Można to zrobić za pomocą naszego tutorialu Wstępna Konfiguracja serwera z Ubuntu 16.04.
Krok 1: Instalacja Java
Tomcat wymaga, aby na serwerze była zainstalowana Java, aby każdy kod aplikacji Java mógł być wykonywany. Możemy spełnić ten warunek poprzez instalację OpenJDK z apt-get.
Najpierw, należy zaktualizować indeks pakietów apt-get:
sudo apt-get update
Następnie należy zainstalować pakiet Java Development Kit za pomocą apt-get:
sudo apt-get install default-jdk
Teraz, gdy mamy zainstalowaną Javę, możemy utworzyć użytkownika tomcat, który będzie używany do uruchomienia usługi Tomcat.
Krok 2: Tworzenie Użytkownika Tomcat
Ze względów bezpieczeństwa, Tomcat musi być uruchomiony w imieniu nieuprzywilejowanego użytkownika (tzn. nie root). Będziemy tworzyć nowego użytkownika i grupę, która będzie uruchamiać usługę Tomcat.
Po pierwsze, należy utworzyć nową grupę tomcat:
sudo groupadd tomcat
Następnie należy utworzyć nowego użytkownika tomcat. Dodamy tego użytkownika do grupy tomcat, z katalogu domowego /opt/tomcat (gdzie będziemy instalować Tomcat), a także z powłoki /bin/false (nikt nie będzie mógł wejść na konto):
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
Teraz, kiedy nasz użytkownik jest skonfigurowany, możemy pobrać i zainstalować Tomcat.
Krok 3: Instalacja Tomcat
Najlepszym sposobem, aby zainstalować Tomcat 8, jest pobranie najnowszej wersji binarnej, a następnie konfiguracja go ręcznie.
Znajdź ostatnią wersję Tomcat 8 na stronie Tomcat 8 Downloads. W chwili pisania tego artykułu, najnowsza wersja to 8.5.5, ale należy użyć nowszej wersji stabilnej, jeśli jest ona dostępna. W sekcji Binary Distributions, a następnie z listy Core, skopiuj link “tar.gz“.
Dalej przejdź do katalogu /tmp na serwerze. Jest to dobry wybór katalogu dla ściągnięcia efemerycznych rzeczy, takich jak archiwum Tomcat, który nam się nie przyda po pobraniu zawartości Tomcat:
cd /tmp
Użyj curl do pobrania linku skopiowanego ze strony internetowej Tomcat:
curl -O https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.87/bin/apache-tomcat-8.5.87.tar.gz
Będziemy instalować Tomcat do katalogu /opt/tomcat. Utwórz katalog, a następnie rozpakuj archiwum za pomocą następnych poleceń:
sudo mkdir /opt/tomcat
sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1
Dalej możemy skonfigurować odpowiednie uprawnienia użytkownika dla naszej instalacji.
Krok 4: Aktualizacja uprawnień
Użytkownik tomcat, którego utworzyliśmy, musi mieć dostęp do instalacji Tomcat.
Przejdź do katalogu, w którym została rozpakowana instalacja Tomcat:
cd /opt/tomcat
Ustaw dla grupy tomcat prawo własności do całego katalogu instalacyjnego:
sudo chgrp -R tomcat /opt/tomcat
Następnie ustaw dla grupy tomcat uprawnienia do odczytu katalogu conf oraz jego zawartości:
sudo chmod -R g+r conf
sudo chmod g+x conf
Zrób użytkownika tomcat właścicielem katalogów webapps, work, temp, i logs:
sudo chown -R tomcat webapps/ work/ temp/ logs/
Teraz, gdy odpowiednie uprawnienia są ustawione, możemy utworzyć plik systemd do zarządzania procesem Tomcat.
Krok 5: Tworzenie Systemd Service File
Chcemy mieć możliwość uruchomienia Tomcat jako usługi, więc będziemy konfigurować plik usług systemd.
Tomcat musi wiedzieć, gdzie jest zainstalowana Java. Ścieżka zazwyczaj jest określana jako “JAVA_HOME“. Najprostszym sposobem, aby znaleźć tą lokalizację, jest uruchomienie tego polecenia:
sudo update-java-alternatives –l
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
Prawidłowa zmienna JAVA_HOME może być wykonana poprzez wyjście z ostatniej kolumny (zaznaczone na czerwono) i dodanie /jre na końcu. Biorąc pod uwagę powyższy przykład, prawidłowa zmienna JAVA_HOME dla tego serwera będzie:
/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
Twoja zmienna JAVA_HOME może być inna.
Dzięki tej informacji, możemy utworzyć plik usług systemd. Otwórz plik o nazwie tomcat.service w katalogu /etc/systemd/system wpisując:
sudo nano /etc/systemd/system/tomcat.service
Wklej następującą zawartość do pliku usług. Zmień wartość zmiennej środowiskowej JAVA_HOME, jeśli to konieczne, aby dopasować do wartości, która została znaleziona w systemie. Można również zmodyfikować ustawienia alokacji pamięci, które są określone w CATALINA_OPTS:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=mult.target
Gdy skończysz, zapisz i zamknij plik.
Następnie ponownie uruchom systemd daemon:
udo systemctl daemon-reload
Uruchom usługę Tomcat wpisując:
sudo systemctl start tomcat
Podwójnie sprawdź, że Tomcat został uruchomiony bez błędów, wpisując:
sudo systemctl status tomcat
Krok 6: Ustawienie zapory i testowanie serweru Tomcat
Teraz, gdy usługa Tomcat jest uruchomiona, możemy ją przetestować, aby upewnić się, że domyślna strona powitalna jest dostępna.
Zanim to zrobimy, musimy ustawić zaporę, aby umożliwić nasze żądania w celu uzyskania dostępu do usługi. Jeśli są spełnione niezbędne warunki, zapora ufw będzie włączona.
Tomcat używa portu 8080 dla akceptacji zwykłych żądań. Można umożliwić ruch na tym porcie wpisując:
sudo ufw allow 8080
Ze zmodyfikowaną zaporą, można uzyskać dostęp do domyślnej strony powitalnej, wpisując w przeglądarce internetowej adres IP lub domenę, a następnie :8080 :
http://server_domain_or_IP:8080
W dodatku do innych informacji zobaczysz domyślną stronę powitalną Tomcat. Jednak, jeśli klikniesz link, na przykład, Manager aplikacji będzie odmowa dostępu. Możemy skonfigurować dostęp.
Teraz włączymy plik usług tak, że Tomcat będzie automatycznie się uruchamiać przy starcie systemu:
sudo systemctl enable tomcat
Krok 7: Konfiguracja Tomcat Web Management Interface
Aby korzystać z menedżera aplikacji internetowych, który jest dostępny z Tomcat, musimy dodać logowanie na nasz serwer. Zrobimy to poprzez edycję pliku tomcat-users.xml:
sudo nano /opt/tomcat/conf/tomcat-users.xml
Będziemy chcieli dodać użytkownika, który będzie miał dostęp do manager-gui i admin-gui (aplikacje internetowe, które pochodzą z Tomcat). Można to zrobić poprzez określenie użytkownika, podobnie jak na poniższym przykładzie, między tagami tomcat-users. Pamiętaj zmienić nazwę użytkownika i ustawić bezpieczne hasło:
<tomcat-users . . .> <user username="admin" password="password" roles="manager-gui,admin-gui"/> </tomcat-users>
Zapisz i zamknij plik po zakończeniu.
Domyślnie nowsze wersje Tomcat ograniczają dostęp dla aplikacji Manager i Host Manager do połączenia z samego serwera. Ponieważ instalujemy na komputerze zdalnym, prawdopodobnie będziesz chciał zmienić lub usunąć to ograniczenie. Aby zmienić ograniczenia adresu IP, otwórz odpowiednie pliki context.xml.
Dla aplikacji Manager wpisz:
sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
Dla aplikacji Host Manager wpisz:
sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
Wewnątrz wykomentuj ograniczenia adresów IP w celu umożliwienia połączenia z dowolnego miejsca. Ewentualnie, jeśli chcesz umożliwić dostęp tylko do połączeń pochodzących z własnego adresu IP, można dodać swój publiczny adres IP do listy:
<Context antiResourceLocking="false" privileged="true" >
<!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
</Context>
Zapisz i zamknij pliki po zakończeniu.
Aby nasze zmiany zostały zastosowane, należy ponownie uruchomić usługę Tomcat:
sudo systemctl restart tomcat
Krok 8: Dostęp do interfejsu WWW
Teraz, kiedy stworzyliśmy użytkownika, możemy ponownie uzyskać dostęp do interfejsu zarządzania siecią w przeglądarce internetowej. Po raz kolejny, można wyświetlić właściwy interfejs wpisując nazwę domeny lub adres IP serwera, a następnie port 8080 w przeglądarce:
http://server_domain_or_IP:8080
Strona będzie wyglądać tak:
Spójrzmy na App Manager dostępną przez link lub
http://server_domain_or_IP/manager/html
Należy wprowadzić dane konta, które zostały dodane do pliku tomcat-users.xml. Następnie powinieneś zobaczyć stronę, która wygląda tak:
Web Application Manager służy do zarządzania aplikacjami Java. Aplikację można uruchamiać, zatrzymywać, uruchamiać ponownie, wdrażać i usuwać. Można również przeprowadzić diagnostykę aplikacji (tzn. znaleźć wyciek pamięci). I wreszcie, informacja o serwerze dostępna jest na samym dole tej strony.
Teraz spójrzmy na Host Manager dostępny przez link lub
http://server_domain_or_IP/host-manager/html/
Na stronie Virtual Host Manager można dodać wirtualne hosty, aby obsługiwać swoje aplikacje.
Wniosek
Instalacja Tomcat zakończona! Teraz możesz projektować Swoje własne aplikacje internetowe na Java!
Obecnie instalacja Tomcat jest funkcjonalna, ale całkowicie niezaszyfrowana. Oznacza to, że wszystkie dane, w tym wrażliwe, takie jak hasła, są przesyłane w postaci zwykłego tekstu, który może być przechwycone i odczytane innymi użytkownikami w Internecie. Aby tego uniknąć, zaleca się szyfrowanie połączenia za pomocą protokołu SSL.
Comments (1)
Michal
Jak uruchomić drugą instancje Tomcat na tej samej maszynie?