하나의 Apache Tomcat 서버에서 여러 웹 응용 프로그램을 실행하는 방법


Apache Tomcat은 Java 코드로 구동되는 웹 서버를 실행하기 위해 Java 서블릿, JSP 및 웹 소켓을 배포 할 수있는 오픈 소스 웹 컨테이너입니다. 또한 크로스 플랫폼 서블릿 컨테이너 또는 웹 컨테이너로 식별 할 수 있습니다.

간단히 말해서 Tomcat은 시중의 다른 웹 컨테이너에 비해 많은 이점이 있기 때문에 많은 산업 이해 관계자들 사이에서 매우 인기가 있습니다. Java 프로젝트에서 웹 아카이브를 만들고 tomcat 컨테이너에 배포하여 Java로 코딩 된 HTTP 웹 서버를 호스팅 할 수 있습니다. 업계에서는 다음과 같은 장점으로 인해 다른 컨테이너보다 아파치 톰캣을 선택합니다.

  1. Light weight.
  2. Widely Used.
  3. Much faster than other containers.
  4. Easy to configure.
  5. Very flexible.

일반적으로 Apache Tomcat은 엔지니어에게 최소한의 구성 변경으로 WAR 아티팩트 (Web ARchives)를 배포 할 수있는 공간을 제공하는 사용자 친화적 인 제품입니다.

이 게시물은 이미 tomcat을 사용하고 있으며 Apache Tomcat 엔진을 시작하고 사용하는 방법을 알고있는 청중을 대상으로합니다.

Apache Tomcat에서 WAR은 컨테이너가 기본적으로 배포하는 webapps 디렉토리에 있어야합니다. 간단히 말해서 webapps 디렉토리는 tomcat이 웹 서버로 배포하기위한 Java 코드의 기본 컨테이너 역할을합니다.

단일 tomcat 컨테이너에서 둘 이상의 웹 서버를 호스팅해야하는 시나리오에서이 게시물을 가이드로 사용할 수 있습니다. 이 기사에서는 하나의 바람둥이 내에 여러 웹 애플리케이션 또는 두 개의 웹 서버를 배포하는 방법을 보여 드리겠습니다.

전제 조건 : Java가 서버에 설치되어 있어야합니다. 1.7.x 이상이 바람직합니다. 이 튜토리얼에서는 tomcat 버전 8.0.37을 사용하기 때문에 Java 1.7이 설치되어 있습니다.

다음과 같이 yum 또는 apt와 같은 패키지 관리자를 사용하여 Java를 설치할 수 있습니다.

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

1 단계 : Apache Tomcat 서버 설치

1. 먼저 루트 계정을 사용하여 별도의 tomcat 사용자를 만듭니다.

# useradd tomcat
# passwd tomcat

이제 tomcat 사용자로 로그인하고 공식 사이트 https://tomcat.apache.org/에서 최신 apache tomcat 번들을 다운로드하거나 또는 다음 wget 명령을 사용하여 터미널에서 직접 다운로드 할 수 있습니다.

이 경우 지금까지 출시 된 안정적인 최신 버전 중 하나 인 Apache Tomcat 8.5.5를 다운로드합니다.

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

2. 파일이 다운로드되면 tar 명령을 사용하여 콘텐츠의 압축을 풀고 다음과 같이 디렉토리 구조를 확인합니다.

$ 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

2 단계 : Apache Tomcat 서버 구성

3. 우리가 찾고있는 구성 변경은 conf 디렉토리에 있으며, Tomcat이 시작하는 데 도움이되는 모든 구성 파일을 배치하는 데 사용됩니다.

conf 디렉토리의 내용은 다음과 같습니다.

$ 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.이 경우 나에게 중요한 것은 server.xml 파일입니다. 따라서 다른 파일이나 디렉토리에 대한 자세한 설명은하지 않겠습니다.

server.xml은 tomcat에 시작할 포트, 배포 할 디렉토리 콘텐츠 및 더 많은 기본 및 기본 구성을 알려주는 구성 파일입니다.

파일을 열면 기본적으로 아래와 같습니다.

$ vim server.xml

3 단계 : Apache Tomcat에 웹 앱 배포

5. 이제 Apache tomcat에 새 웹 애플리케이션을 배포합니다. 먼저 서비스 태그가 닫힌 위치 를 찾은 다음 첫 번째 닫힌 서비스 태그 뒤에 줄 아래에 삽입합니다.

<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>

보시다시피 기본 바람둥이가 포트 8080으로 시작하기 때문에 새로 삽입 된 항목에서 커넥터 포트를 7070으로 변경했습니다.이 설정을 완전히 설정하면 포트 8080 및 7070에서 두 개의 웹 서버가 실행됩니다.

6. server.xml 에 대한 변경 사항을 저장 한 후 apache main 내의 webapps2 라는 아파치에 디렉토리를 만듭니다.

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

내가 제공 한 server.xml 새 항목을 보면 서비스 이름, 앱 기반 및 엔진의 이름이 webapps2로 지정되어 있음을 알 수 있습니다. "이것이 제가 webapps2라는 디렉토리를 만든 이유입니다. "원하는대로 만들 수 있지만 필요에 따라 항목을 변경해야합니다.

7. 두 번째 웹 서버가 실행 중인지 확인하기 위해 webapps 디렉토리의 내용을 webapps2 디렉토리에 복사했습니다.

$ cp -r webapps/* webapps2/

8. 이제 흥미로운 부분입니다. 서버를 시작하고 작동하는지 확인합니다. bin 디렉토리로 이동하여 startup.sh 스크립트를 실행합니다. "logs 디렉토리에있는 catalina.out 파일에서 로그를 볼 수 있습니다.

$ 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. 로그를 참조하면 webapps webapps2 가 모두 배포되고 앱이 문제없이 시작되었음을 확인할 수 있습니다.

$ 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.이 시나리오에서 내가 사용한 서버의 IP는 172.16.1.39이고 단일 tomcat 컨테이너 내에서 두 개의 웹 서버를 시작할 수 있음을 알 수 있습니다.

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

이 기사가 유용하고 즐겁기를 바랍니다. TecMint와 계속 연락하고이 기사와 관련된 질문이 있으면 언제든지 저에게 연락하십시오.