본문 바로가기

Infra/Cloud Server

AWS EC2 배포 과정 Flow

AWS EC2 배포 과정

AWS에 작성한 코드를 배포하다가 이것저것 세팅할 것도 많고 헷갈려서 그 과정을 한 번 정리해보았다. 세부적인 설정이나 이런 것은 공식문서를 참고하면 될 것 같고, 기본적인 Flow, 큰 그림을 아는 것이 중요하다고 생각했다.

 

AWS EC2를 들어가게 되면 인스턴스라는 것이 존재한다. 이 인스턴스 안에 배포할 파일을 올려놓는 것이다.

 

인스턴스 안에 파일을 올려놓고, 여러가지 환경설정을 하기 위해선, 인스턴스에 접속해야 한다. 인스턴스에 접속하기 위해선 Secure Shell(SSH)를 이용하면 된다. 나의 경우에는 윈도우 환경이기 때문에 Git bash 명령어 ssh로 인스턴스에 접속하였다. 이 때 ssh로 인스턴스에 접근하기 위해선 암호키가 있어야 한다. Key Pair가 그 역할을 하는데, 이것은 인스턴스를 초기에 세팅할 때 발급받을 수 있다.

 

SSH와 Key Pair를 통해 인스턴스에 접속하게 되면, 여기에 서버를 세팅하기 위한 환경설정을 해주면 된다. 나의 경우에는 node.js(express)로 웹사이트를 만들었기 때문에, node.js, npm 그리고 mongoDB를 설치해주었다. 이 때 mongoDB에는 별도의 세팅이 필요한데, 다른 곳에서도 AWS EC2 인스턴스에 접근할 수 있도록 설정을 해주어야 한다. 그리고 db 설치를 진행하면 된다.

 

이렇게 환경설정을 하고 나면, 이제 작성한 소스 코드를 인스턴스에 업로드 해주면 된다. filezilla나 알ftp로 업로드하기엔 시간이 너무 오래 걸려서, 나는 github에 작성한 코드를 push한 다음, 인스턴스에도 git을 설치하여, git clone으로 소스코드를 다운받았다.

 

그 다음 Client에서 하던 것과 마찬가지로 node server.js로 서버를 켜주면 되는데, 문제는 이 서버가 항상 작동해야 한다는 것이다. 그래서 PM2라는 어플리케이션을 이용해 서버를 켜주면 된다. pm2를 설치 한뒤, pm2 start server.js 명령어를 입력하면, 서버를 계속 켜둘 수 있다.

 

모든 설정이 다 끝난 것처럼 보이겠지만, 마지막 설정이 남았다. 마지막으로 인스턴스의 포트를 열어주어야 한다. 앞에서 MongoDB를 외부에서 접근가능하도록 설정해놓았지만, 인스턴스의 포트를 열어 주지 않았기 때문에 이것까지 열어주어야 외부에서 접속이 가능하다. 80포트 뿐만 아니라 MongoDB를 위한 27017포트까지 열어주어야 한다.