Wyszukiwanie w witrynie

Jak uruchomić wiele aplikacji internetowych na jednym serwerze Apache Tomcat


Apache Tomcat to kontener internetowy typu open source, który umożliwia wdrażanie Servletów Java, JSP i Web Sockets w celu uruchomienia serwer WWW oparty na kodzie Java. Można go również zidentyfikować jako wieloplatformowy kontener serwletów lub kontener sieciowy.

Krótko mówiąc, Tomcat jest bardzo popularny wśród wielu interesariuszy z branży ze względu na wiele zalet w porównaniu z innymi kontenerami internetowymi dostępnymi na rynku. Możesz tworzyć archiwa internetowe na podstawie swojego projektu Java i po prostu wdrażać je w kontenerze Tomcat, aby hostować serwer WWW HTTP kodowany przez Javę. Branże wybierają Apache Tomcat zamiast innego kontenera ze względu na następujące zalety.

  1. Lekka.
  2. Popularne.
  3. Znacznie szybciej niż inne kontenery.
  4. Łatwy w konfiguracji.
  5. Bardzo elastyczny.

Zwykle Apache Tomcat jest produktem przyjaznym dla użytkownika, który zapewnia inżynierom przestrzeń do wdrażania artefaktów WAR (ARchiwów internetowych) przy minimalnych zmianach konfiguracji.

Ten post jest skierowany do odbiorców, którzy już korzystają z Tomcat i wiedzą, jak uruchomić i używać silnika Apache Tomcat.

W Apache Tomcat WARs należy umieścić w katalogu webapps, w którym kontener domyślnie je wdraża. Mówiąc najprościej, katalog webapps działa jako główny kontener kodu Java, dzięki któremu Tomcat może wdrożyć go jako serwer WWW.

W scenariuszu, w którym musimy hostować więcej niż jeden serwer WWW z jednego kontenera Tomcat, możesz wykorzystać ten post jako przewodnik, jak to osiągnąć. W tym artykule pokażę Ci, jak wdrożyć wiele aplikacji internetowych lub dwa serwery internetowe w jednym Tomcat.

Wymagania: Na serwerze powinna być zainstalowana Java. Najlepiej 1.7.x lub nowszy. W tym samouczku mam zainstalowaną Java 1.7, ponieważ używam Tomcat w wersji 8.0.37.

Możesz zainstalować Java za pomocą menedżera pakietów, takiego jak yum lub apt, jak pokazano:

yum install java              [On CentOS based Systems]
apt-get install default-jre   [On Debian based Systems]

Krok 1: Zainstaluj serwer Apache Tomcat

1. Najpierw utwórz osobnego użytkownika tomcat przy użyciu konta root.

useradd tomcat
passwd tomcat

Teraz zaloguj się jako użytkownik tomcat i pobierz najnowszy pakiet Apache Tomcat z oficjalnej strony tutaj: https://tomcat.apache.org/ lub alternatywnie możesz użyć następującego polecenia wget, aby pobrać bezpośrednio w terminalu .

W tym przypadku pobieram Apache Tomcat, 8.5.5, który jest jedną z najnowszych, wydanych obecnie stabilnych wersji.

wget http://redrockdigimark.com/apachemirror/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz

2. Po pobraniu pliku rozpakuj zawartość za pomocą polecenia tar i wyświetl strukturę katalogów jak pokazano:

tar -xvf apache-tomcat-8.5.5.tar.gz
cd apache-tomcat-8.5.5/
ls -l
total 112
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 bin
drwx------. 2 tomcat tomcat  4096 Sep  1 01:23 conf
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 lib
-rw-r-----. 1 tomcat tomcat 57092 Sep  1 01:23 LICENSE
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 logs
-rw-r-----. 1 tomcat tomcat  1723 Sep  1 01:23 NOTICE
-rw-r-----. 1 tomcat tomcat  7063 Sep  1 01:23 RELEASE-NOTES
-rw-r-----. 1 tomcat tomcat 15946 Sep  1 01:23 RUNNING.txt
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 temp
drwxr-x---. 7 tomcat tomcat  4096 Sep  1 01:22 webapps
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 work

Krok 2: Skonfiguruj serwer Apache Tomcat

3. Zmiana konfiguracji, której szukamy, znajduje się w katalogu conf i służy do umieszczania wszystkich plików konfiguracyjnych, które pomagają uruchomić Tomcat.

Zawartość katalogu conf wygląda jak poniżej.

cd conf/
ls -l
total 224
-rw-------. 1 tomcat tomcat  12502 Sep  1 01:23 catalina.policy
-rw-------. 1 tomcat tomcat   7203 Sep  1 01:23 catalina.properties
-rw-------. 1 tomcat tomcat   1338 Sep  1 01:23 context.xml
-rw-------. 1 tomcat tomcat   1149 Sep  1 01:23 jaspic-providers.xml
-rw-------. 1 tomcat tomcat   2358 Sep  1 01:23 jaspic-providers.xsd
-rw-------. 1 tomcat tomcat   3622 Sep  1 01:23 logging.properties
-rw-------. 1 tomcat tomcat   7283 Sep  1 01:23 server.xml
-rw-------. 1 tomcat tomcat   2164 Sep  1 01:23 tomcat-users.xml
-rw-------. 1 tomcat tomcat   2633 Sep  1 01:23 tomcat-users.xsd
-rw-------. 1 tomcat tomcat 168133 Sep  1 01:23 web.xml

4. W tym przypadku ważny jest dla mnie plik server.xml. Nie zamierzam więc szczegółowo wyjaśniać innych plików i katalogów.

server.xml to plik konfiguracyjny, który informuje tomcat, który port ma go uruchomić, jaką zawartość katalogu wdrożyć oraz wiele innych głównych i podstawowych konfiguracji.

Po otwarciu pliku wygląda to w zasadzie tak jak poniżej.

vim server.xml

Krok 3: Wdrażanie aplikacji internetowych w Apache Tomcat

5. Teraz wdrożymy nową aplikację internetową w Apache Tomcat, najpierw znajdź miejsce, w którym tag serwisowy jest zamknięty i wstaw poniższe linie po pierwszym zamknięciu znacznik serwisowy.

<Service name="webapps2">
    <Connector port="7070" maxHttpHeaderSize="7192"
        maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
        enableLookups="false" redirectPort="7443" acceptCount="100"
        connectionTimeout="20000" disableUploadTimeout="true" />
        <Connector port="7072" 
        enableLookups="false" redirectPort="7043" protocol="AJP/1.3" />

    <Engine name="webapps2" defaultHost="localhost">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase"/>
            <Host name="localhost" appBase="webapps2"
                unpackWARs="true" autoDeploy="true"
                 xmlValidation="false" xmlNamespaceAware="false">
            </Host>
    </Engine>
</Service>

Jak widzisz, zmieniłem port złącza na 7070 w nowo wstawionym wpisie, ponieważ domyślny Tomcat zaczyna się od portu 8080. Po całkowitym skonfigurowaniu będą działać dwa serwery internetowe na portach 8080 i 7070.

6. Po zapisaniu zmian w pliku server.xml utwórz katalog w Apache o nazwie webapps2 w głównym pliku Apache.

cd /home/tomcat/apache-tomcat-8.5.5/
mkdir webapps2

Jeśli zaobserwujesz nowy wpis w pliku server.xml, który podałem, powinieneś zobaczyć, że nazwa usługi, baza aplikacji i silnik mają nazwę webapps2. Z tego powodu utworzyłem katalog o nazwie webapps2. Możesz go utworzyć według własnego uznania, ale pamiętaj o wprowadzeniu zmian we wpisie, jeśli jest to konieczne.

7. Aby upewnić się, że drugi serwer internetowy działa prawidłowo, skopiowałem zawartość katalogu webapps do katalogu webapps2.

cp -r webapps/* webapps2/

8. Teraz ekscytująca część. Uruchomimy serwer i zobaczymy, czy działa. Przejdź do katalogu bin i wykonaj skrypt startup.sh. Możesz przeglądać logi w pliku catalina.out znajdującym się w katalogu logs.

cd bin/
./startup.sh
Using CATALINA_BASE:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_HOME:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_TMPDIR: /home/tomcat/apache-tomcat-8.5.5/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/tomcat/apache-tomcat-8.5.5/bin/bootstrap.jar:/home/tomcat/apache-tomcat-8.5.5/bin/tomcat-juli.jar
Tomcat started.

9. Jeśli przejrzysz dzienniki, zobaczysz, że zarówno webapps, jak i webapps2 są wdrożone i aplikacja uruchamia się bez żadnych problemów .

cd logs/
tail -25f catalina.out 
29-Sep-2016 12:13:51.210 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples
29-Sep-2016 12:13:51.661 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples has finished in 452 ms
29-Sep-2016 12:13:51.664 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs
29-Sep-2016 12:13:51.703 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs has finished in 39 ms
29-Sep-2016 12:13:51.704 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager
29-Sep-2016 12:13:51.744 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager has finished in 39 ms
29-Sep-2016 12:13:51.748 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
29-Sep-2016 12:13:51.767 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service webapps2
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.5
29-Sep-2016 12:13:51.777 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager has finished in 102 ms
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT
29-Sep-2016 12:13:51.915 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT has finished in 35 ms
29-Sep-2016 12:13:51.927 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples
29-Sep-2016 12:13:52.323 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
29-Sep-2016 12:13:52.337 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples has finished in 414 ms
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs has finished in 29 ms
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager
29-Sep-2016 12:13:52.417 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager has finished in 46 ms
...

10. W tym scenariuszu adres IP serwera, którego używałem, to 172.16.1.39 i jak widać, mógłbym uruchomić dwa serwery internetowe w jednym kontenerze Tomcat.

http://172.16.1.39:8080   [1st Web App]
http://172.16.1.39:7070   [2nd Web App]

Mam nadzieję, że wszyscy uznacie ten artykuł za przydatny i przyjemny. Bądź w kontakcie z TecMint i skontaktuj się ze mną w przypadku jakichkolwiek pytań dotyczących tego artykułu.