on my way

AWS EC2에 Tomcat 서버 연결 및 오류 해결 과정 (Tomcat, 서버 충돌, 보안그룹, RDS) 본문

experiences/DevLog

AWS EC2에 Tomcat 서버 연결 및 오류 해결 과정 (Tomcat, 서버 충돌, 보안그룹, RDS)

wingbeat 2024. 9. 9. 15:51
반응형

AWS EC2에 Tomcat 서버 연결 및 오류 해결 과정

이번 포스팅에서는 AWS EC2에 Ubuntu 환경에서 Apache Tomcat을 설치하고, 서버를 연결하는 과정을 다루었다.

과정 중 발생한 다양한 오류와 그 해결 방법도 함께 정리하였다.

또한, RDS 연결 문제와 관련된 서브넷 설정 변경 과정도 자세히 설명한다.

이 포스팅을 통해 EC2에서 Tomcat 서버를 성공적으로 설정하고, 외부에서 접속할 수 있도록 하는 데 필요한 단계들을 이해할 수 있다.


1. EC2 인스턴스 생성 및 설정

AWS EC2에서 Ubuntu 인스턴스를 생성했다.

서버와의 통신을 위해 보안 그룹에서 HTTP(80번 포트), HTTPS(443번 포트), SSH(22번 포트)를 열어주었다.

이로써 EC2 인스턴스에 접근할 수 있는 기본적인 네트워크 설정을 완료했다.

 

SSH 접속 명령어는 다음과 같다:

ssh -i /path/to/your-key.pem ec2-user@<your-ec2-public-ip>

만약 SSH 연결 시 키 파일 권한 오류가 발생한다면, 아래 명령어로 권한을 수정할 수 있다:

chmod 400 /path/to/your-key.pem

2. Java 및 Tomcat 설치

Java 설치

Tomcat을 실행하기 위해서는 Java가 필요하므로 OpenJDK 11을 설치했다. 아래 명령어로 설치를 진행했다:

sudo yum install java-11-amazon-corretto -y

설치가 완료되면 Java 버전을 확인하여 정상적으로 설치되었는지 확인했다:

java -version

Tomcat 설치

Tomcat을 설치하기 위해 Apache Tomcat 9 버전을 다운로드한 후, 압축을 풀고 실행 준비를 했다.

  1. Tomcat 다운로드 및 압축 해제:
cd /opt
sudo wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.93/bin/apache-tomcat-9.0.93.tar.gz
sudo tar xvf apache-tomcat-9.0.93.tar.gz
sudo mv apache-tomcat-9.0.93 tomcat
  1. Tomcat 실행 권한 부여:
sudo chmod +x /opt/tomcat/bin/*.sh
  1. Tomcat 서버 시작:
sudo /opt/tomcat/bin/startup.sh

이후, 웹 브라우저에서 http://<your-ec2-public-ip>:8080으로 접속하여 Tomcat 서버가 정상적으로 실행되었는지 확인했다.


3. Java Heap Space 오류 해결

Tomcat이 정상적으로 실행된 후, 프로젝트를 빌드하려는 과정에서 Java heap space 오류가 발생했다.

이는 빌드 도중 메모리 부족으로 발생하는 문제였다.

해결 방법:

MAVEN_OPTS 환경 변수를 사용하여 Maven이 사용할 수 있는 메모리 크기를 조정했다.

export MAVEN_OPTS="-Xms512m -Xmx1024m"

메모리 설정을 변경한 후, 프로젝트를 다시 빌드했다:

mvn clean package

만약 여전히 메모리가 부족하다면, 더 많은 메모리를 할당할 수 있다:

export MAVEN_OPTS="-Xms1024m -Xmx2048m"

이 과정을 통해 Java heap space 오류를 해결하였다.


4. 포트 충돌 및 해결

Tomcat 서버를 실행하는 과정에서 Address already in use 오류가 발생했다.

이는 기본 포트(8080)가 이미 다른 프로세스에서 사용 중이라는 의미였다.

해결 방법:

Tomcat 설정 파일을 수정하여 포트를 8080에서 9090으로 변경했다.

sudo nano /opt/tomcat/conf/server.xml

설정 파일에서 다음과 같은 내용을 수정했다:

<Connector port="9090" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

변경 후 Tomcat을 다시 시작했다:

sudo /opt/tomcat/bin/shutdown.sh
sudo /opt/tomcat/bin/startup.sh

브라우저에서 http://<your-ec2-public-ip>:9090으로 접속하여 서버가 정상적으로 구동되는지 확인했다.


5. EC2 보안 그룹 설정

Tomcat이 9090번 포트에서 정상적으로 실행되었지만, 외부에서 접속할 수 없었다.

이는 EC2 보안 그룹에서 해당 포트를 허용하지 않았기 때문이었다.

AWS 콘솔에서 EC2 보안 그룹을 수정하여 9090번 포트를 열었다.

이렇게 해서 외부에서 정상적으로 접속할 수 있게 되었다.


6. 서브넷 문제 해결: Private 서브넷을 Public으로 변경

문제 상황:

RDS가 외부에서 연결되지 않는 문제를 겪었다. 퍼블릭 액세스를 허용하고, 보안 그룹에서 3306 포트도 열었지만, 여전히 외부 연결이 되지 않았다.

이는 RDS가 Private 서브넷에 있었기 때문이었다. 이를 해결하기 위해 서브넷을 Public으로 변경했다.

해결 방법:

  1. AWS 콘솔에서 VPC 서비스 > 라우팅 테이블로 이동했다.
  2. RDS가 사용하는 라우팅 테이블을 선택한 후, 라우팅 편집을 클릭했다.
  3. 라우팅 추가 버튼을 눌러 다음과 같이 입력했다:
    • 첫 번째 대상: 0.0.0.0/0
    • 리소스 ID: 인터넷 게이트웨이 선택 (자동으로 igw-xxxxxxxx의 ID가 입력됨)
  4. 변경 사항을 저장한 후, RDS가 잘 연결되는 것을 확인했다.

7. 결론

이번 과정을 통해 EC2 인스턴스에서 Apache Tomcat 서버를 성공적으로 배포하고, 프로젝트를 구동하는 데 필요한 환경을 구축했다.

중간에 발생한 포트 충돌, 메모리 문제, 서브넷 문제 등의 오류들을 하나씩 해결하면서, Tomcat 서버와 RDS를 안정적으로 연결할 수 있었다.

이 과정을 통해 EC2 인스턴스에서 서버를 설정하고 배포하는 데 필요한 주요 개념과 기술을 숙지할 수 있었으며, 앞으로 유사한 문제에 직면했을 때 적절하게 대처할 수 있는 지식을 쌓았다.


이 포스팅이 Tomcat 서버 설치 및 배포 과정에서 겪을 수 있는 다양한 오류 해결에 도움이 되길 바란다.

반응형