Tomcat 디렉토리 배포 - Tomcat dilegtoli baepo

서버에 프로젝트를 올리는 방법 중 가장 간단하고, 많이 쓰이는 방법 중 하나는 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/ 으로 접속해서 테스트

Tag

tomcat war 배포

tomcat war deploy

tomcat war root 배포

[Java] Eclipse 웹프로젝트 war파일 배포하는 방법

[Java] Eclipse 웹프로젝트 war파일 배포하는 방법 로컬 이클립스에서 개발한 프로젝트를 실제 사용할 서버에 배포할 때 단순한 JSP파일같은 경우는 간단하게 편집해서 저장할 수 있지만 JSP나 서블릿으로 프로그..

haenny.tistory.com

 

 

그렇다면 위의 상태에서

 

즉, 한개의 프로젝트는 배포한 상태에서 다른 프로젝트 war파일을 배포하고 싶으면 어떻게 해야할까?

 

 

 

1. webapps 폴더에 추가하고자 하는 배포파일(WAR파일)을 넣어준다.

 

Tomcat 디렉토리 배포 - Tomcat dilegtoli baepo

 

 

2. tomcat [conf] 폴더의 server.xml 을 수정해준다.

 

 

결론부터 비교해서 보겠다.

 

 

먼저, TEST1.war파일 하나만 배포했을 때의 server.xml 코드이다.

 

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />  
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  
  <GlobalNamingResources>   
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" enableLookups="false" acceptCount="100" disableUploadTimeout="true"/>
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
   
    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
	  <Context path="" docBase="TEST1" reloadable="true"/>
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

    </Engine>
  </Service>
</Server>

 

 

TEST2.war파일을 추가한 뒤 수정한 server.xml 코드이다.

 

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />  
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  
  <GlobalNamingResources>   
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" enableLookups="false" acceptCount="100" disableUploadTimeout="true"/>
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
   
    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
	  <Context path="" docBase="TEST1" reloadable="true"/>
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

    </Engine>
  </Service>

  <Service name="Catalina2">
    <Connector port="9090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="9443" URIEncoding="UTF-8" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" enableLookups="false" acceptCount="100" disableUploadTimeout="true"/>
    <Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
   
    <Engine name="Catalina2" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
	  <Context path="" docBase="TEST2" reloadable="true"/>
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

    </Engine>
  </Service>


</Server>

 

 

차이가 느껴지는가?

 

 

자세히 살펴보면 Service 부분이 추가된 것을 알 수 있다.

 

 

등록하고자하는 배포파일 각각의 서비스를 등록해주고, 서비스마다 WAS가 넘겨주는 포트를 다르게 해주어야한다.

 

 

표시된 부분만 수정하여 서비스를 추가하자

 

<Service name="Catalina">
  <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"         URIEncoding="UTF-8" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true"   enableLookups="false" acceptCount="100" disableUploadTimeout="true"/>
  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

<Engine name="Catalina" defaultHost="localhost">
  <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
  </Realm>

  <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
  <Context path="" docBase="TEST1" reloadable="true"/>
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  </Host>

  </Engine>
</Service>

 

 

그리고 실행방법은 동일하게 bin 폴더로 가서 [Shift + 마우스 우키] - [여기서 명령창 열기] 후 명령프롬포트창에서 startup 명령어를 치면 된다.

 

 

 

위에 수정한 부분은 가장 기본적인 부분만 수정한 것이다.

 

 

만약 webapps과 webapps2폴더로 war파일을 구분했다면, appBase를 수정해주면 되고

 

 

 

추가로 도메인을 사서 alias를 주고싶다면 아래와 같이 수정도 가능하다.

 

<Host name="도메인.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>도메인.com</Alias>
<Alias>www.도메인.com</Alias>
<Context path="" docBase="TEST1" reloadable="true"/>

 

 

 

 

 

 

 

참고링크 : 윈도우 서비스 등록하는 방법

 

[Tomcat] Apache Tomcat 윈도우 서비스 등록하는 방법 Apache Tomcat 설치 및 포트 설정하는 방법은 아래 링크를 통해 확인하고 오자. Link : https://haenny.tistory.com/30 [Java] Eclipse 웹프로젝트 war파일..