본문 바로가기
Develop/DevOps

Tomcat을 이용한 수동 배포

by jaeyoungb 2022. 12. 13.

JAR보단 WAR로 패키징한 경우 더 다양한 설정과 웹 환경을 구성할 수 있다.

다음은 프로젝트를 .war 포맷으로 변환한 후에 Tomcat을 이용해 실행해보는 과정이다.

 

1. JRE 설치

- https://www.azul.com/downloads/?version=java-11-lts&os=windows&architecture=x86-64-bit&package=jre

 

2. JRE 환경 변수 설정

  • 변수 이름 : JRE_HOME
  • 변수 값 : C:\Program Files\Zulu\zulu-11-jre

3. Tomcat 설치

- https://tomcat.apache.org/download-90.cgi

 

JDK 11 버전은 Tomcat 9 버전과 가장 호환성이 높다.

 

다운로드 경로는 편한대로

ex)

Mac : /Users/{username}/Downloads/apache-tomcat-9.0.68/

Windows : C:\Users\User\Downloads\apache-tomcat-9.0.68-windows-x64\apache-tomcat-9.0.68\

 

  • bin : 톰캣을 실행하거나 종료할 수 있는 스크립트 파일이 존재
  • conf : 서버 설정 파일이 존재
  • webapps : 톰캣 위에서 실행할 웹 애플리케이션의 기본 저장 경로
    (.war 파일을 이 곳에 이동시키거나, 설정파일에서 경로를 변경하여 실행할 수 있음)

 

4. 서버 실행 및 종료 명령어

OS에 상관없이 터미널에서 Tomcat의 bin 디렉토리로 이동한 후, 서버를 실행하고 종료한다.

Windows

wsl 터미널이 아닌 cmd 창을 이용하여 진행

C:\Users\...\apache-tomcat-9.0.68\bin> startup.bat    # 톰캣 실행
C:\Users\...\apache-tomcat-9.0.68\bin> shutdown.bat   # 톰캣 종료

Mac

{username}@{root} bin % startup.sh    # 톰캣 실행
{username}@{root} bin % shutdown.sh   # 톰캣 종료

 

Tomcat 정상 실행 화면

 

Tomcat으로 웹 애플리케이션 실행

JAR에서 WAR로 포맷 변경

1. build.gradle 수정 및 reload

plugins {
    ...
    id 'war' // 추가
    ...
}
...

 

2. 해당 프로젝트 Application 파일 수정

@SpringBootApplication
public class ToDoServerApplication extends SpringBootServletInitializer {    // 변경 부분
    public static void main(String[] args) {
        SpringApplication.run(ToDoServerApplication.class, args);
    }

    // 변경 부분
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(ToDoServerApplication.class);
    }
}

3. 프로젝트 빌드

- 해당 프로젝트 build → libs에 있는 war 파일(zip)을 Tomcat 파일 내부의 webapps 폴더 내부로 옮긴다.

 

4. Tomcat 파일 내부의 conf 폴더 내부에 있는 server.xml 파일을 수정

...
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Context path="/" docBase="생성된 war파일 이름"  reloadable="false" > </Context>
        
        <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>
...

 

 

++ Tomcat 포트 변경

- server.xml 파일 수정

...
<Connector port="원하는 포트 번호" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
...

외장 Tomcat은 위의 원하는 포트에서 실행

IDE에서 실행되는 Spring boot(Embeded Tomcat)은 8080포트에서 실행