CodeClover
[AWS] Express 서버 EC2 배포 실습 본문
앞에서 EC2 셋팅하고 접속하고 탄력적 IP 연결까지 진행했는데 이번에는 생성한 EC2 배포해보는 과정을 정리해보려고 한다.
우선 생성한 인스턴스를 시작해서 연결을 눌러 실행한 상태에서

우선 우리는 Express 서버를 EC2에 배포할 것이기 때문에 Node.js를 설치해야한다. 따라서 권한을 root 권환으로 바꾸고
$ sudo su # root 권한으로 변경
node.js 설치 코드를 복붙해주자...ㅎㅎ
$ apt-get update && /
apt-get install -y ca-certificates curl gnupg && /
mkdir -p /etc/apt/keyrings && /
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nod
NODE_MAJOR20 && /
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro
apt-get update && /
apt-get install nodejs -y
음... 나는 강사님 코드에서 설치가 정상적으로 완료되지 않아서 아래 두개의 명령어 활용해서 node 설치 완료했다.
$ apt update
$ apt install -y nodejs npm
이제 node가 잘 설치 되었는지 확인해주면 내가 설치한 버전이 나오면서 잘 설치됨 확인 ~
$ node -v

강사님의 Github에서 Express 프로젝트 clone해주고
$ git clone https://github.com/JSCODE-EDU/ec2-express-sample
해당 프로젝트 폴더로 이동해서 설치 진행
$ cd ec2-express-sample
$ npm i
.env 파일을 별도로 만들어서 처리하겠음
$ vi .env
#vi 편집기로 이제 안에다가 DATABASE_NAME=my_database 라고 작성해주고 :wq 으로 저장하고 나오기
pm2 설치해서 서버 실행시킬것
$ sudo npm i -g pm2
$ sudo pm2 start app.js

그러면 이런식으로 실행 성공한 화면이 나오니까 이제 우리가 아까 연결한 탄력자IP 주소를 입력해서 브라우저에서 확인해보면

이제 누구든 해당 port 입력하면 연결 가능하다.
( 보충 실습 ) - Spring Boot 서버를 EC2에 배포하기
실습을 진행하기에 앞서 jdk 설치를 먼저 진행하기 위한 명령어를 입력한다.
$ sudo apt update
$ sudo apt install openjdk-17-jdk -y
자 이제 잘 설치가 완료 되었는지 확인해보면
$ java -version
jdk17 버전이 잘 설치됨 확인가능

강사님의 실습용 깃허브 clone
$ git clone https://github.com/JSCODE-EDU/ec2-spring-boot-sample.git
이제 프로젝트를 build 해보면
$ cd ec2-spring-boot-sample/
$ cd src
$ cd main
$ cd resources
$ vi application.yml # vi편집기 활용해서 작성하기
port 번호 80번으로 연결하도록 설정 및 저장 ( 저장은 :wq )
server:
port: 80
설정 완료 후 build 진행
$ ./gradlew clean build
build가 완료되면 .jar 파일 실행하면 되는데
이때, ubuntu@ip-172-31-46-56:~/ec2-spring-boot-sample/build/libs$ 해당 위치에서 .jar 파일 진행하기
$ sudo java -jar ec2-spring-boot-sample-0.0.1-SNAPSHOT.jar
그런데 !!!! 나는 한번에 성공하지 못하고 아래 사진과 같은 에러 발생함

찾아보니까,,, 서버는 정상 실행중이었고 port 번호 80으로 정상, EC2 네트워크 정상인데 인프라적으로 80번 port 가 겹치는 문제발생함! 바로 위에서 실습할때 80번 포트를 node가 이미 사용중인 상태에서 spring boot도80 사용하려고 하니까 충돌이 발생해서 실행 실패함.
80번 포트 점유 프로세스 확인하기 위해서 아래 명령어 입력해서 확인해보니까
$ sudo lsof -i :80

사용중이라서 종료시킴 그런데 계속 살아나서 확인해보니까 내가 node 80번 포트 활용하는 실습에서 pm2 root 계정 활용해서 계속 살아났던거였음 ..... 그래서 pm2 앱 중지해서 80포트 점유하고 있는 프로세스 제거 완료한 이후에 다시 시도하니까 정상적으로 실행됨
제거 했던 명령어는 아래와 같음
$ sudo pm2 kill
이제 실습을 모두 완료했으면 비용이 더이상 청구되지 않도로고 EC2 깔끔하게 종료하는 방법을 정리해보면
사용했던 EC2 인스턴스 종료를 선택하면,,, 연결된 리소스 정리 부분에서 이 인스턴스를 종료한 후 연결된 리소스로 인해서 비용이 발생 할 수 있다고 나오는데 이말은 탄력적 IP 연결도 종료해야한다는 말이다.

1. EC2 인스턴스 .. 삭제하기 ( = 시스템 종료하기 )
2. 탄력적 IP 탭으로 이동해서 오른쪽 상단에서 작업 클릭 > 탄력적 IP 주소 릴리스 선택 > 릴리스 클릭하면 연결했던 탄력적 IP 삭제 처리 완료됨
=> 비용 나갈 문제가 전혀 없음 !
※ 이 글은 인프런 JSCODE - [비전공자도 이해할 수 있는 AWS 입문/실전] 강의를 듣고 작성한 글입니다.
'인프라' 카테고리의 다른 글
| [AWS] HTTPS 연결하기_이론정리 (0) | 2026.02.13 |
|---|---|
| [AWS] 도메인 연결 실습 (0) | 2026.02.13 |
| [AWS] 탄력적 IP 연결 (0) | 2026.02.12 |
| [AWS] EC2 셋팅하기 (0) | 2026.02.12 |