AWS

[AWS] 인스턴스 생성하기 및 배포하기

상똥 2024. 5. 28. 23:43

* 차근차근 따라하면 배포할 수 있습니다 화이팅*

 

1. aws 홈에 접속 후 좌측 상단 메뉴에서 서비스 탭 클릭, EC2 선택 / 또는 검색창에 EC2 입력

 

2. 인스턴스 시작 선택

 

3. 인스턴스 설정 시작

(1) 이름 설정 (원하는 이름으로)

 
(2) 애플리케이션 선택
- 필자는 Amazon Linux 썼음
- 프리티어 사용 가능한지 꼭!!! 확인

 
(3) 인스턴스 유형 확인
- 프리티어 사용 가능인지 꼭!! 확인

 
(4) 키 페어 선택 또는 생성

- 키 페어 생성 시 ↓
- '새 키페어 생성' 선택 후
- 이름 입력
- 키페어 유형 : RSA 선택
- 프라이빗 키 형식 : .pem 선택
- 키페어 생성 누르기 → 바로 다운로드됨, Downloads 폴더에서 확인 가능

 
(5)네트워크 설정
- 퍼블릭 IP 자동 할당 '활성화' 선택 (고정적인 주소 생성을 위해서)
- '보안 그룹 생성' 선택 (기존에 생성한 보안그룹이 있다면 기존 보안그룹 선택)
- 아래 체크박스를 모두 선책하여 HTTP(80), HTTPS(443)로부터의 접속을 허용
- SSH 트래픽은 내 IP로 제한

 
(6) 스토리지 구성
- 프리티어는 최대 30gb 사용 가능하므로 30gb로 설정

 
(7) 우측 하단 '인스턴스 시작' 클릭

- 생성 완료

- '모든 인스턴스 보기' 클릭 시 인스턴스 목록에서 생성한 인스턴스 확인 가능

'

4. 보안 그룹 편집

- 배포한 주소로 다른 사람들이 접속할 수 있도록 인바운드 규칙을 편집할 것
- '인스턴스 ID' 클릭 후 '보안' 클릭

- 보안그룹 클릭

- '인바운드 규칙 편집' 클릭

- 아래와 같이 설정 (순서는 상관 없음, 빨간박스를 설정해줘야함)

- 파란 박스는 인스턴스를 생성할 때 네트워크 설정 부분에서 미리 설정된 것
- 배포하려는 서버 또는 클라이언트에서 사용중인 port 번호(필자는 3000) 추가
- 우측 하단 '규칙 저장' 클릭

 

5. 인스턴스 연결

- 생성한 인스턴스 체크 후, '연결' 클릭

- 아래와 같이 <가이드>가 뜸

 
- 터미널 열기
- 배포를 위해서는 ssh 프로토콜을 사용해야 하므로, 위에서 생성한 키를 ssh로 옮겨야 함
- 아까 생성한 키가 존재하는 곳으로 이동 후 (*별도 설정이 없었다면 Downloads폴더에 있을 것)

cd Downloads

 
- 키를 ssh 폴더로 이동하는 명령어 입력

mv ( 키 페어 이름 ).pem ~/.ssh
이렇게 입력했어야됨

 
- ssh 로 이동

cd ..
cd ~/.ssh
이렇게 입력했어야됨

(*ls를 입력해서 잘 이동됐는지 확인 가능)
- <가이드>에서 복붙한 [chmode 400 "키 이름.pem"] 입력 (안하면 오류날수도)
- <가이드> 에서 복붙한 [ssh -i "키 이름.pem" ec2-user@퍼블릭DNS] 입력
(* 초기 설정에서 linux를 선택하면 'ec2-user'가 포함되고, ubuntu를 선택하면 'ubuntu'가 포함됨)
- 연결할거냐고 물어보면 yes 입력

이렇게 입력했어야됨

6. 빌드 파일 준비 및 배포에 필요한 파일 ssh 폴더로 복사

(1) 배포할 파일 빌드
- 빌드할 파일을 열고, npm run build 명령어를 입력하여 dist 파일을 생성해줌

- package.json을 열어 scripts의 start:prod 를 "pm2 start dist/main.js" 로 바꿔줌

 
(2) 배포 사이트 생성
- 다른 터미널을 열어 ssh폴더로 이동
- SFTP를 이용하기 위해, 아래의 명령어 입력

sftp -i ./키 이름.pem ec2-user@퍼블릭DNS주소
이렇게 입력했어야됨

- 배포할 폴더 생성하기 (필자는 폴더명을 server로 했음)

mkdir server

 
(3) 배포에 필요한 파일 복사해오기
- 배포에 필요한 파일 : dist폴더, package.json, package-lock.json, .env(있다면)
- 파일 복사 명령어↓ (package.json, package-lock.json, .env 가져올 때 사용)

put 로컬파일경로 리모트파일경로

- 폴더 복사 명령어↓ (dist 가져올 때 사용)

put -r 로컬파일경로 리모트파일경로

- 로컬파일 절대경로 복사↓

package.json 복사해오기
package-lock.json 복사해오기
dist 폴더 복사해오기

 
(4) Linux환경에 node 설치하기
- ec2-user로 다시 돌아오기 
(*실수로 터미널을 종료했다면, 터미널을 새로 켜고 ssh로 이동한 다음 터미널에 [ssh -i "키 이름.pem" ec2-user@퍼블릭DNS] 입력)

curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
sudo yum install -y nodejs

 
(5) npm환경 세팅하기
- 아까 package.json 외 필요한 파일들을 옮겨둔 폴더(필자는 server)로 이동

cd server

- node_modules를 설치하기 위해 npm i 명령어 입력

npm i

 
(6) 무중단 서비스 실행하기
- 터미널을 종료해도 계속 접속할 수 있도록 pm2 활용할 것
- pm2 설치를 위해 아래 명령어 입력 (경로 잘 확인하기)

sudo npm i pm2 -g

- 드디어 실행!!!

pm2 start npm -- start

- [퍼블릭DNS:port번호]를 직접 브라우저에 띄워보기

 

고생하셨습니다 ^-^ 궁금하신 점은 댓글로 남겨주세요