System/System & Service

[Ubuntu 20.04] Tomcat 서버 구축 - 1편

마늘김 2023. 8. 10. 00:40

0. 들어가며

 최근에 CI/CD에 관한 강의를 듣고 있습니다. Jenkins를 활용해 CI/CD 파이프라인을 구축하는 과정에 웹 서버로 Tomcat을 사용하게 되어 이를 구축하게 되었습니다. 처음에는 컨테이너로 구성해보려 했으나 Jenkins에서 빌드 후 배포 과정에 Tomcat Server가 구동되고 있는 컨테이너에 접근하지 못하는 문제가 있어 VM을 사용하기로 했습니다.(해당 문제는 차후에 해결책을 찾아보도록 하겠습니다.)


1. Tomcat 서버를 위한 VM 호스팅

 앞서 말씀드린 대로, VM 형식으로 Tomcat 서버를 구축하기로 결정은 했지만 어디에 하느냐가 문제였습니다. 우선 가장 먼저 떠오른 방식은 VMware Workstation이나 Oracle Virtual Box를 활용하는 것이었습니다. 하지만 저는 Apple M1 프로세서를 사용하는 맥북을 사용하고 있어서 약간의 제약사항이 있었습니다. 아무래도 제가 지금까지 경험해 온 환경이 대부분 AMD64 기반이다 보니 Apple M1에 맞추어진 사용 환경이 익숙하지 못하다는 것이 가장 큰 걸림돌이었죠. 어떻게 방법이 없을까 고민하던 차에 갑자기 떠오른 게 NAS였습니다. 제가 사용하고 있는 NAS는 Synology사의 DS1515+인데 VM을 만들 수 있는 기능을 기본적으로 제공하고 있습니다. NAS 자체의 하드웨어 스펙이 그리 넉넉한 건 아니지만 Linux VM 정도는 띄울 수 있는 데다, 사실 쓸데없는 파일들만 쌓이고 있던 참이었는데 이렇게 활용할 수 있는 방법이 생겨서 다행인 것 같습니다.

 

 VM을 생성하는건 그다지 어렵지 않습니다. GUI 환경이 아주 친절하게 되어 있는 데다가, 제가 주로 VMware 제품을 다루다 보니 더욱 그렇지 않나 싶습니다. VM을 생성하는 방법은 따로 포스팅을 통해 안내하도록 하겠습니다. VM에 OS로는 Ubuntu 20.04를 설치했으며 NAS의 사설 IP 네트워크 대역과 같은 곳에 위치하도록 IP 주소를 수동으로 부여하였습니다.

[사진 1] Synology NAS의 기능인 Virtual Machine Manager를 사용하여 VM 생성

 다른 방법으로는 VMware Workstation이나 Oracle Virtual Box를 사용하여 VM을 만들 수 도 있습니다. 해당 포스팅을 보시는 분들이라면 VM 생성 정도는 크게 어렵게 느끼시지 않을 것으로 생각합니다.

 

2. Tomcat 패키지 설치

 VM이 준비되었다면 Tomcat 패키지를 설치해 볼 차례입니다. 여러 방법들이 있지만 가장 간단한 Ubuntu 기본 리포지터리를 통해 패키지를 설치하는 방법을 사용해 보겠습니다.

sudo apt update

 가장 먼저 apt update 명령어를 통해 패키지 정보를 최신으로 업데이트합니다. 앞서 잠깐 언급드렸지만 CI/CD에 관한 강의를 들으며 실습을 위한 환경을 조성하는 것이라 최신 버전의 Tomcat이 필요한 게 아니었습니다. 다운 가능한 Tomcat의 패키지 목록을 검색해서 9 버전이 존재하는지 확인해 보겠습니다.

sudo apt-cache search tomcat

[사진 2] tomcat9와 tomcat9-admin 패키지 확인이 가능

 확인 결과 Tomcat 9 버전 패키지가 검색되었습니다. 이제 패키지를 설치해 보도록 하겠습니다. tomcat9tomcat9-admin 패키지를 설치하겠습니다.

sudo apt install tomcat9 tomcat9-admin

 Tomcat이 작동하기 위해서는 JDK가 반드시 설치되어야 하는데, 패키지 설치를 하게 되면 자동으로 종속성이 있는 패키지를 설치해 줍니다. 따라서 위와 같은 방식으로 설치 시에는 JDK를 따로 설치할 필요는 없습니다. 여기까지 하셨다면 Tomcat 패키지 설치는 끝이 납니다. 사실 매우 간단하죠. 이제 몇 가지 설정작업을 통해 Tomcat 서버 구성을 마무리하도록 하겠습니다.

 

3. Tomcat 서버를 위한 방화벽 설정

 Tomcat 서버는 기본적으로 8080번 포트를 통해 응답하게 되어있습니다. 실제로 8080번 포트로 잘 작동하고 있는지 아래 명령어를 통해 확인해 보도록 하겠습니다.

ss -ltn

[사진 3] ss -ltn 명령어를 통해 8080 포트가 열려 있는것을 확인

 이제 방화벽에서 해당 포트를 통한 통신을 허용해 주어야 합니다. 우선 방화벽 상태를 확인해 보도록 하겠습니다.

sudo ufw status

Status: inactive #방화벽이 비활성화 된 상태를 나타냄
Status: active # 방화벽이 활성화 된 상태이며, 아래에 어떤 방화벽 규칙이 있는지 표시

 위 명령어를 실행해 보면 현재 방화벽의 상태를 알 수 있습니다. Ubuntu를 처음 설치하고 따로 방화벽 설정을 하지 않았다면 Status: inactive로 표시가 됩니다. 먼저 방화벽 규칙을 설정 후 방화벽을 활성화해 보겠습니다.

sudo ufw allow 8080/tcp

sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y #'y' 입력 후 Enter

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
8080/tcp                   ALLOW       Anywhere
8080/tcp (v6)              ALLOW       Anywhere (v6)

 먼저 8080번 포트의 tcp 프로토콜 연결에 대해서 허용 규칙을 만들어 줍니다. 그리고 sudo ufw enable 명령어를 입력하면 방화벽이 활성화되면서 SSH 연결이 끊길 수도 있다는 경고 메시지가 등장합니다. 'y'를 입력하고 방화벽을 활성화시켜 줍니다.


주의 : 만약 SSH로 VM에 접속하여 작업 중이라면 방화벽을 활성화 화면 접속이 끊어질 수 있습니다. 따라서 SSH가 사용하는 22번 포트 역시 허용해 주는 규칙을 추가해야 합니다. SSH로 작업하는 경우 아래와 같이 입력합니다.

sudo ufw allow 8080/tcp
sudo ufw allow 22/tcp  #22번 포트를 허용하여 SSH 접속을 유지

sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
8080/tcp                   ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere
8080/tcp (v6)              ALLOW       Anywhere (v6)
22/tcp (v6)                ALLOW       Anywhere (v6)

 위와 같이 출력되면 방화벽 설정이 잘 된 것입니다. 이제 마지막으로 Tomcat 서버가 잘 응답을 하는지 확인해 보도록 하겠습니다.

 

4. 브라우저를 통해 localhost:8080으로 접속

 Ubuntu에 기본으로 설치된 Firefox 브라우저를 실행하고 주소창에 http://localhost:8080을 입력하면 아래와 같은 화면을 확인할 수 있습니다.

[사진 4] Tomcat 서버가 잘 작동하는 모습


 이상으로 Ubuntu 20.04에 Tomcat 서버를 구축해 보았습니다. 사실 Tomcat 서버를 설치하는 것은 그다지 어려운 과정은 아니라고 생각합니다. 다음 포스팅에는 이렇게 구축된 Tomcat 서버에 Jenkins를 이용하여 웹 애플리케이션을 배포하기 위한 여러 사전 준비 과정 및 실제 애플리케이션 배포를 진행해 보도록 하겠습니다.

 

 이번 포스팅은 여기서 마치도록 하겠습니다. 감사합니다.