"오늘의 문제를, 내일의 기록으로 남깁니다."

막연한 이론보다, 구체적인 코드가 필요할 때. 직접 겪고 해결한 문제들을 기록합니다. 실무에서 부딪히는 진짜 이슈와, 내가 이해한 방식 그대로 정리한 가이드입니다.

웹개발/서버 운영 & 인프라

AWS EC2에 WAR 파일 배포, 실무에서는 이렇게 합니다 (Tomcat 환경 기준)

자바를잡아 2025. 7. 19. 16:00
반응형

AWS EC2에 WAR 파일 배포, 실무에서는 이렇게 했습니다

회사에서 신규 웹 서비스를 개발하고 드디어 첫 배포를 진행했다. 로컬에서는 완벽히 작동했던 WAR 파일을 AWS EC2에 올려 배포하려는데, 생각보다 막히는 부분이 많았다. 특히 AWS 자체보다는 리눅스 환경에서 Tomcat 설정, 포트 개방, 퍼미션, WAR 복사 위치 등 실무에서 직접 해봐야 알 수 있는 포인트들이 복병이었다.

이번 글에서는 **AWS EC2 인스턴스에 WAR 파일을 배포하는 전 과정을 실무 기준으로 정리**해본다. 환경 구성부터 배포, 접근 테스트까지 단계별로 다룬다.

1단계: EC2 인스턴스 준비하기

1. EC2 인스턴스 생성

  • Amazon Linux 2 또는 Ubuntu 계열 AMI 선택
  • 보안 그룹에서 22번(SSH), 8080번 포트 인바운드 허용
  • 키페어 생성 및 .pem 파일 안전하게 보관

2. SSH 접속

ssh -i ~/Downloads/my-key.pem ec2-user@xx.xx.xx.xx

접속이 안 된다면 아래 확인:

  • .pem 파일 권한: chmod 400 my-key.pem
  • 보안 그룹 인바운드 설정 확인

2단계: Java & Tomcat 설치

1. Java 설치

sudo yum update -y
sudo yum install java-1.8.0-openjdk-devel -y

java -version

2. Tomcat 설치

cd /opt
sudo wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.85/bin/apache-tomcat-9.0.85.tar.gz
sudo tar -xvzf apache-tomcat-9.0.85.tar.gz
sudo mv apache-tomcat-9.0.85 tomcat

실행 권한 부여:

sudo chmod +x /opt/tomcat/bin/*.sh

Tomcat 실행:

cd /opt/tomcat/bin
./startup.sh

브라우저에서 http://xx.xx.xx.xx:8080 접속 확인

3단계: WAR 파일 배포하기

1. WAR 파일 EC2에 복사

scp -i ~/Downloads/my-key.pem ~/workspace/myapp.war ec2-user@xx.xx.xx.xx:/home/ec2-user

2. Tomcat webapps 디렉토리로 이동

sudo mv /home/ec2-user/myapp.war /opt/tomcat/webapps/

이제 Tomcat이 자동으로 myapp.war 파일을 인식하고 자동으로 압축을 해제한다.

3. 로그로 배포 확인

tail -f /opt/tomcat/logs/catalina.out

배포가 완료되면 브라우저에서 접속:

http://xx.xx.xx.xx:8080/myapp

4단계: 방화벽 및 포트 이슈 해결

1. EC2 보안 그룹 확인

  • 8080 포트가 0.0.0.0/0 또는 본인의 IP로 허용돼 있어야 함

2. Linux 방화벽 설정

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

Amazon Linux 2는 기본적으로 firewalld가 꺼져 있는 경우가 많음. 그래도 확인은 해보자.

5단계: 배포 자동화를 위한 팁

WAR 파일을 자주 배포해야 하는 경우엔 아래 방법들을 고려할 수 있다.

  • Jenkins + SCP: 빌드 후 자동 배포
  • S3 + user-data script: 인스턴스 생성 시 자동 배포
  • GitHub Actions + EC2 연결: 푸시 시 자동 복사

보너스: 기본 앱 제거 및 루트 경로 배포

1. 기본 app 삭제

sudo rm -rf /opt/tomcat/webapps/ROOT

2. WAR 파일 이름을 ROOT.war로 변경

sudo mv /opt/tomcat/webapps/myapp.war /opt/tomcat/webapps/ROOT.war

이제 접속 주소는 http://xx.xx.xx.xx:8080/ 이 된다.

마무리: AWS EC2 WAR 배포, 어려운 건 딱 처음뿐

AWS EC2에 WAR 파일을 배포하는 일은 처음엔 까다롭게 느껴질 수 있지만, 한번 제대로 해보면 그다음부터는 반복작업일 뿐이다. 실무에서는 권한 문제, 포트 개방, 경로 오타 등 사소한 이유로 막히는 경우가 많기 때문에 차근차근 확인하는 게 중요하다.

추후에는 SSL 적용, Nginx reverse proxy, 배포 자동화까지 확장하는 내용도 다뤄볼 예정. 오늘 글로 AWS 배포의 첫 걸음을 확실히 잡아가시길!

반응형