커스텀 축하 카드 쇼핑몰 [축하해요]

Amazon EC2(AWS EC2)를 이용한 서버 배포

yebin0322 2025. 1. 6. 19:05
반응형

1. EC2 접속 후 인스턴스 시작

프로젝트 환경 : Spring, JAVA 11, Maven, Tomcat Server

https://ap-northeast-2.console.aws.amazon.com/ec2/home?region=ap-northeast-2#Home

나는 ubuntu 서버로 생성해 주었다. 인스턴스 유형은 프리 티어 사용 가능인 t2.micro로 해 주었고, 네트워크 설정에서는 다음 두 개의 값에 체크를 눌러 트래픽을 허용해 주었다.

여기서 키 페어를 생성해 주고, 생성된 키페어(~.pem)값을 저장해 주어야 한다.

인스턴스가 생성되었으면, 연결 버튼을 누르고 터미널을 열어 우분투 서버에 접속할 차례이다. 이 때, 위에서 생성해 준 키페어가 있는 경로로 가서 우분투 서버를 실행해 주어야 한다.

참고로 이 때, 생성된 키페어에 '파일 소유자는 읽기만 가능하고, 그룹과 다른 사용자는 해당 파일에 접근할 수 없도록 함'이라는 의미의 chmod 400을 해 주어야 한다.

이후 맨 아래의 명령어를 이용하여 인스턴스에 연결을 해 주면 된다.

접속한 직후의 경로는 /home/ubuntu이다. 여기서 git clone을 해 준 후, 최상단 디렉토리로 이동하면 된다.

이 때, git ignore에 들어간 파일들을 다시 생성해 주어야 한다. 나는 src/main/resources에 들어가 db.properties파일을 touch 명령어를 통하여 생성해 주었다. 이후 안에 들어갈 값을 intelliJ에서 복붙하면된다.

이후 다시 루트 디렉토리로 이동하여 java와 tomcat, maven을 설치해준다.

톰캣 다운 : cd /home/ubuntu/gitRepo/shinhan_team2_chukahaeyo
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.89/bin/apache-tomcat-9.0.89.tar.gz
압축해제 : tar xzf apache-tomcat-9.0.89.tar.gz

톰캣의 압축을 해제한 후, 다음 명령어를 통해 서버의 포트번호를 변경해주면 된다. 이 때, 포트번호를 변경한 부분에 URIEncoding="UTF-8”도 추가해 주면 된다.

포트번호 변경 : nano /home/ubuntu/shinhan_team2_chukahaeyo/apache-tomcat-9.0.89/conf/server.xml

2. 빌드

mvn clean을 먼저 진행해 주고, mvn package를 진행해 준다. 이 때, 다음과 같은 에러가 뜨면 JVM에 할당된 힙 메모리 크기를 늘려 주면 해결된다.

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:3.3.2
(default-war) on project chukahaeyo: Error assembling WAR: Problem creating war: Execution exception: Java heap space -> [Help 1]
해결 : export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=256m"

mvn clean

target 디렉토리를 삭제하여 이전 빌드의 산출물을 삭제. 깨끗한 상태에서 빌드를 시작할 수 있도록 함.

mvn package

프로젝트를 빌드하고 실행 가능한 패키지를 생성함. 소스 코드를 컴파일하고 테스트하며, 최종 산출물을 생성할 때 사용함

이후 cp명령어를 사용하여 target 디렉토리에 있는 chukahaeyo-1.0.0-BUILD-SNAPSHOT.war를 tomcat 서버의 webapps 디렉토리 내에 있는 ROOT.war 파일로 복사한다.

파일 복사 : sudo cp /home/ubuntu/shinhan_team2_chukahaeyo/target/chukahaeyo-1.0.0-BUILD-SNAPSHOT.war /home/ubuntu/shinhan_team2_chukahaeyo/apache-tomcat-9.0.89/webapps/ROOT.war

3. 서버 실행

이후 톰캣 서버를 시작한다. 물론 이미 실행중인 서버가 있다면, 종료시키고 시작하는 편이 더 안전하다.

시작 : /home/ubuntu/shinhan_team2_chukahaeyo/apache-tomcat-9.0.89/bin/startup.sh
종료 : /home/ubuntu/shinhan_team2_chukahaeyo/apache-tomcat-9.0.89/bin/shutdown.sh

이제 인스턴스의 퍼블릭 IPv4주소를 통해 서버에 접속하면 로컬 서버를 실행하지 않아도 접속이 되는 것을 볼 수 있다. 다만, 이 방법은 코드가 변경될 때 마다 새로 빌드를 해 주어야 해서 굉장히 번거롭다. 다음 글에서는 GitHub Actions을 이용하여 배포를 자동화하는 방법을 작성할 것이다.

반응형