본문 바로가기

프로그래밍/OS, Server

tomcat 7 의 ROOT context 를 임의의 webapp 로 변경하기

 

 

개요

myApp 라는 webapp 를 만들고 myApp.war 로 배포할 경우 tomcat 에서는 기본적으로 http://hostname:8080/myApp 같이 URL에 app 명을 주어야 접근할 수 있다.

myApp 를 ROOT Context 에 할당해서 http://hostname:8080/ 로 연결할수 있도록 하는 방법을 정리해 본다

설정

#1 war rename

myApp.war 를 ROOT.war 로 rename 해서 deploy 한다. maven 을 쓸 경우 다음과 같이 finalName 을 설정해서 빌드하거나 서버에 올릴때 ROOT.war 로 변경한다.

pom.xml
<build>
   <!-- 기본 finalName
   <finalName>${artifactId}-${version}</finalName> -->
   <finalName>ROOT.war</finalName>
</build>

장점

  • 적용하기 매우 쉽다

단점: 

  • build 나 deploy 절차를 변경해야 할 수도 있다.

#2 server.xml 변경

  1. tomcat 의 context root 설정을 다음과 같이 변경한다. 

    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="false">
            <Context path="" docBase="myApp"  reloadable="false" > </Context>   
    </Host>

side effect

ROOT와 myApp 두 개의 Context가 생기는 문제가 있다.

#3 app 를 webapps 외부에 위치

app 를 webapps 밖에 설정하고 context 에 해당 path 를 지정한다.

  1. myApp.war 를 webapps 와 같은 레벨의 위치에 복사
  2. conf/server.xml 수정

    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" deployOnStartup="false" >
     <Context path="" docBase="${catalina.home}/myApp" reloadable="false" > </Context>
    </Host
  3. tomcat 재구동 


장점

  • java 로 만든 web app 를 tomcat 을 포함해 외부에 배포할 경우 적당하다. confluence 등의 상용 솔루션이 이런 방식으로 패키징한다. 

단점: 

  • webapps 폴더 밖에 있으면 war 가 자동으로 unpack 되지 않으므로 개발이나 테스트 서버에 적용하기에는 적당하지 않다.
  • unpack 되지 않아 log4j 등의 설정을 찾지 못하므로 log4j.properties 등 property 파일은 lib 폴더에 넣거나 war 를 tomcat 구동전에 수동으로 압축을 풀어야 한다.


Ref

 

Tomcat에 war파일을 배포

일반적인 경우

1. 프로젝트 war파일 생성

- Eclipse에서 프로젝트 우클릭 -> Export - Web - WAR file 선택 -> Next버튼 클릭

- Destination에 war파일 생성될 위치 지정하고, Finish버튼 클릭


2. Tomcat 폴더/webapps 폴더에 생성된 war파일 이동


3. Tomcat 기동

- Linux 서버일 경우는 Tomcat 폴더/bin/startup.sh를 실행

- Window 서버일 경우는 Tomcat 폴더/bin/startup.bat를 실행


4. http://localhost:8080/war파일명 으로 접속해서 테스트



ROOT에 war파일 배포할 경우

1. 프로젝트 war파일 생성

- Eclipse에서 프로젝트 우클릭 -> Export - Web - WAR file 선택 -> Next버튼 클릭

- Destination에 war파일 생성될 위치 지정하고, 파일명은 반드시 'ROOT.war'로 입력한 후 Finish버튼 클릭

  * 파일명을 꼭 ROOT로 해야하는 것은 아니지만 ROOT가 아닌 다른 걸로 하려면 별도의 설정이 필요함


2. Tomcat 폴더/webapps/ROOT 폴더의 이름을 변경

* Tomcat을 설치하면 위 경로에 ROOT폴더가 있는데 이 폴더가 존재하면 ROOT.war가 압축해제되지 않음


3. Tomcat 폴더/webapps 폴더에 생성된 ROOT.war파일 이동


3. Tomcat 기동

- Linux 서버일 경우는 Tomcat 폴더/bin/startup.sh를 실행

- Window 서버일 경우는 Tomcat 폴더/bin/startup.bat를 실행


4. http://localhost:8080/ 으로 접속해서 테스트

 

출처 : https://www.lesstif.com/pages/viewpage.action?pageId=14745616