SPRING 프로젝트를 리눅스 tomcat에 배포하기

merci·2024년 1월 31일
post-thumbnail

이 글은 MAVEN으로 만들어진 SPRING 프로젝트를 톰캣서버에 배포하는 과정을 기록합니다.

IntelliJ 에서 Tomcat을 이용한 실행 방법

스프링 프로젝트는 스프링 부트 프로젝트와와 달리 내장 톰캣을 가지고 있지 않으므로 IDE 환경의 톰캣으로 localhost:8080 주소로 접속할 수 있습니다.
하지만 리눅스에는 이러한 IDE가 없으며 톰캣 서버도 설치되어 있지 않으므로 개발자가 직접 톰캣을 특정 경로에 설치 후 직접 톰캣서버를 실행시켜야 합니다.

IntelliJ의 톰캣 설정 방법

IntelliJ IDEA를 열고, Maven 프로젝트를 로드합니다.
상단 메뉴에서 Run-> Edit Configurations...를 선택합니다.

왼쪽 상단의 + 버튼을 클릭하여 Tomcat Server -> Local을 선택합니다.

Application Server에서 설치된 Tomcat 서버를 선택합니다.
Tomcat이 아직 설정되지 않았다면, Configure...를 클릭하여 Tomcat의 설치 경로를 지정합니다.

Deployment 탭에서 + 버튼을 클릭하고, Artifact...을 선택하여 배포할 Maven 프로젝트의 WAR 파일을 선택합니다.

Application context/를 선택합니다.

이제 실행하여 http://localhost:8080 로 접속하여 개발을 진행합니다.

여기서는 "war exploded를 사용하고 있습니다.
이는 압축을 하지 않은 파일로 개발중에는 코드를 변경할 때마다 WAR 파일을 새로 패키징하고 배포하는 과정 없이 바로 변경 사항을 볼 수 있기 때문입니다.

반면에 실제 운영 환경에서는 war로 압축해서 사용합니다.
이는 애플리케이션을 하나의 파일로 관리하기 쉽고, 압축으로 인해 전송 시간과 디스크 공간을 절약할 수 있기 때문입니다.



tomcat 배포 사전 조건

  • JAVA가 설치되어 있어야 합니다. (톰캣 9는 자바 11 이상이 필요)
  • 서버에 리눅스가 설치되어 있어야 합니다.
  • 서버에 톰캣이 설치되어야 합니다.
    이글의 톰캣 설치 경로는 /usr/local/tomcat9/

톰캣을 설치하고 나서
tomcat9 디렉토리에 들어가면 아래와 같은 목록이 나옵니다.

-rw-r----- 1 root root 19992  4월 13  2023 BUILDING.txt
-rw-r----- 1 root root  6210  4월 13  2023 CONTRIBUTING.md
-rw-r----- 1 root root 57092  4월 13  2023 LICENSE
-rw-r----- 1 root root  2333  4월 13  2023 NOTICE
-rw-r----- 1 root root  3398  4월 13  2023 README.md
-rw-r----- 1 root root  6901  4월 13  2023 RELEASE-NOTES
-rw-r----- 1 root root 16505  4월 13  2023 RUNNING.txt
drwxr-x--- 4 root root  4096 12월 20 13:42 bin
drwx------ 3 root root  4096  1월 31 10:51 conf
drwxr-x--- 2 root root  4096  6월 29  2023 lib
drwxr-x--- 2 root root  8192  1월 31 10:43 logs
drwxr-x--- 2 root root    30  6월 29  2023 temp
drwxr-x--- 8 root root   110  1월 31 11:00 webapps
drwxr-x--- 3 root root    22  6월 29  2023 work

여기서 bin 디렉토리의 startup.sh를 실행한다면 기본 8080포트로 톰캣의 홈페이지에 접속할 수 있습니다.


내부 디렉토리 구조

리눅스에 톰캣을 설치하면 아래와 같은 디렉토리를 가집니다.

  • bin/
    이 디렉토리에는 Tomcat을 시작하고 종료하는 데 필요한 스크립트가 포함되어 있습니다.
    startup.shshutdown.sh는 각각 서버를 시작하고 종료하는 데 사용됩니다.
  • conf/
    Tomcat 서버의 설정 파일이 위치하는 디렉토리입니다.
    server.xml은 Tomcat 서버의 주요 설정 파일이며, 포트 번호, 호스트 이름 등의 설정을 포함합니다.
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               />

web.xml은 전역 웹 애플리케이션 설정을 정의합니다.
context.xml은 모든 웹 애플리케이션에 적용되는 컨텍스트 설정을 포함합니다.

  • logs/
    Tomcat의 로그 파일이 저장되는 디렉토리입니다.
    서버 운영 중 발생하는 다양한 정보, 경고, 에러 메시지 등이 로그로 기록됩니다.
  • webapps/
    웹 애플리케이션을 배포하는 디렉토리입니다.
    WAR 파일을 이 디렉토리에 넣으면 Tomcat이 자동으로 애플리케이션을 배포하고 실행합니다.
  • work/
    Tomcat이 JSP 파일을 서블릿으로 변환할 때 생성되는 자바 클래스 파일과 관련된 작업 파일을 저장하는 곳입니다.
  • lib/
    Tomcat 작동에 필요한 자바 라이브러리와 기타 필요한 JAR 파일이 포함된 디렉토리입니다.
    여기에 있는 JAR 파일들은 Tomcat 서버와 모든 웹 애플리케이션에서 공통적으로 사용됩니다.
    Tomcat 서버의 핵심 기능을 지원하는 다양한 JAR(Java ARchive) 파일들이 포함되어 있습니다.
    • catalina.jar:
      이 파일은 Tomcat의 핵심 서블릿 컨테이너 구현을 포함하고 있습니다.
      Catalina는 Tomcat의 서블릿 엔진으로, 서블릿과 JSP를 처리하는 중요한 구성 요소입니다.
    • jasper.jar:
      Jasper는 Tomcat의 JSP 엔진으로, JSP 파일을 해석하고 처리하여 서블릿으로 변환하는 역할을 합니다.
      jasper.jar는 이러한 JSP 처리와 관련된 기능을 담고 있습니다.


war 배포하기

IntelliJ 를 사용한다면 아래의 버튼 클릭 2번으로 war파일을 만들수 있습니다.

먼저 clean을 통해서 기존의 war를 삭제하고 install버튼을 통해서 새로운 war파일을 생성합니다.

만들어진 war파일을 리눅스의 톰캣 디렉토리로 이동시킵니다.
/usr/local/tomcat9/webapps/

이제 옮겨진 war의 이름을 변경합니다.

$ sudo mv test-1.0.0.war ROOT.war

그러면 아래와 같은 구조가 됩니다.

-rw-r--r--  1 root root 219822450  1월 31 13:59 ROOT.war
drwxr-x--- 16 root root      4096  6월 29  2023 docs
drwxr-x---  7 root root        99  6월 29  2023 examples
drwxr-x---  6 root root        79  6월 29  2023 host-manager
-rw-r--r--  1 root root       203  1월  2 15:03 index.jsp
drwxr-xr-x  2 root root         6  7월 11  2023 logs
drwxr-x---  6 root root       114  6월 29  2023 manager

이제 bin 디렉토리의 startup.sh를 실행시키면 톰캣이 자동으로 ROOT.war파일을 찾고 압축을 해제합니다.
이때 ROOT.war로 파일명을 변경한 이유는 톰캣이 실행될 때 war의 파일명으로 디렉토리를 생성하게 되기 때문이고,
톰캣은 ROOT라는 이름의 디렉토리를 이용해서 배포를 하기 때문입니다. -> http://[hostname]:[port]/

SPRING 프로젝트를 톰캣 서버에 배포한 뒤에는 해당 주소로 접속이 가능하게 됩니다.

profile
작은것부터

0개의 댓글