이 글은 MAVEN으로 만들어진 SPRING 프로젝트를 톰캣서버에 배포하는 과정을 기록합니다.
스프링 프로젝트는 스프링 부트 프로젝트와와 달리 내장 톰캣을 가지고 있지 않으므로 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로 압축해서 사용합니다.
이는 애플리케이션을 하나의 파일로 관리하기 쉽고, 압축으로 인해 전송 시간과 디스크 공간을 절약할 수 있기 때문입니다.
/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.sh과shutdown.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 처리와 관련된 기능을 담고 있습니다.
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 프로젝트를 톰캣 서버에 배포한 뒤에는 해당 주소로 접속이 가능하게 됩니다.