웹사이트 검색

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


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

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

  1. 가벼운 무게.
  2. 광대하게 사용 된.
  3. 다른 컨테이너보다 훨씬 빠릅니다.
  4. 구성이 쉽습니다.
  5. 매우 유연합니다.

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

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

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

단일 Tomcat 컨테이너에서 둘 이상의 웹 서버를 호스팅해야 하는 시나리오에서는 이 게시물을 지침으로 사용하여 이를 수행할 수 있습니다. 이 기사에서는 하나의 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. 먼저 root 계정을 사용하여 별도의 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.xmltomcat에게 시작할 포트, 배포할 디렉터리 콘텐츠, 기타 다양한 기본 구성을 알려주는 구성 파일입니다.

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

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>

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

6. server.xml에 대한 변경 사항을 저장한 후 Apache 기본 내에서 webapps2라는 Apache 디렉터리를 만듭니다.

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 스크립트를 실행하세요. 로그 디렉터리에 있는 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. 로그를 참조하면 webappswebapps2가 모두 배포되고 앱이 문제 없이 시작되는 것을 확인할 수 있습니다. .

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에 계속 연락하시고 이 기사와 관련된 질문이 있으면 언제든지 저에게 연락해 주세요.