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 배포의 첫 걸음을 확실히 잡아가시길!
'웹개발 > 서버 운영 & 인프라' 카테고리의 다른 글
| Nginx와 Apache 차이점 총정리: 어떤 웹서버를 써야 할까? (1) | 2025.08.02 |
|---|---|
| 리눅스에서 crontab으로 서비스 자동 재시작 설정하는 방법 (실무 예제 포함) (5) | 2025.08.01 |
| Sticky Session 없이 Tomcat 세션 공유? 실무에서 직접 설정한 방법 정리 (4) | 2025.07.19 |
| Apache + Tomcat 로드밸런싱 구성 방법 (mod_jk vs mod_proxy 실무 설정 예제) (0) | 2025.06.26 |
| Tomcat 세션 클러스터링, Redis 없이 DeltaManager로 구현하는 방법 (1) | 2025.06.26 |