[Nest.js] AWS Lightsail을 활용한 백엔드 배포

장성우·2023년 2월 23일
0
post-thumbnail

시작하기 전

  1. 깃헙 레포지토리를 새로 파서 build된 폴더(dist), package.json, package-lock.json 이 3개만 올려두시는 거를 추천합니다. 뭐 엄청 좋은 인스턴스 대여 할 것도 아닐테니 깡 코드 빌드돌리면 뻑이 날 수도 있기 때문입니다.
  2. package.json에 start:prod 내용 바꿔주기
"start:prod": "pm2 start dist/main.js"

VPS: 가상 사설 서버 구축

1. AWS Lightsail 페이지로 이동

바로 인스턴스 생성 들어가줍니다.

위 사진처럼 플랫폼은 Linux/Unix 선택 후 밑의 OS전용 탭에서 Ubuntu골라주시면 됩니다.

인스턴스들은 보다시피 3개가 3개월동안 무료인데 째째하게 3.5달러는 고르지 마시고 최소 5달러짜리로 가셔야합니다. (특별한 이유는 없음)

이름은 하고싶은거 입력하시면 됩니다. 그 후에 특별히 할 거 없고 바로 인스턴스 생성

다 만들고나면 이렇게 생성이 되는데 아직 완전히 만들어 진것은 아니니 담배한대 피고 와줍니다.

다 생성돼서 들어오면 이런 위와같은 창이 뜹니다. 그러면 표시되어있는 SSH를 사용하여 연결을 눌러 인스턴스로 들어가줍니다.

내가 SSH좀 해봤고 내 터미널에서 바로 들어가도록 하고싶다~ 하면은 맨 밑에 따로 설명하겠습니다.

들어오면 위와같은 화면이 뜹니다. 그러면 아래에 있는 명령어들 복붙해서 필요한 것들 깔아줍시다.

명령어

  • sudo apt-get update (각종 프로그램 설치 및 버전관리 매니저)
  • sudo apt-get -y upgrade (아래같은거 뜨면은 그냥 OK하고 넘어가기)

  • sudo apt-get install build-essential (C++, Python등 빌드에 관련한 패키지 묶음 다운로드)
  • sudo apt-get install curl (웹 사이트에 접속해서 패키지를 다운받는거)
  • curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash --
  • sudo apt-get install -y nodejs
  • sudo apt-get install git
  • sudo apt-get install vim (우분투에서 쓰는 코드 에디터)
  • touch .gitconfig
  • git config --global user.name gyomdyung (git config --global user.name [깃허브 닉네임])
  • git config --global user.email seastory624@gmail.com (**git config --global user.email [깃허브 이메일])**
  • git config --global --list
  • git clone <프로젝트>
  • cd repository-name
  • npm i (npm i --legacy-peer-deps)
  • sudo npm i -g @nestjs/cli@8
  • sudo npm i -g pm2
  • vi .env (환경변수 붙여 넣기) - 레포지토리에 (중요한).env 파일도 같이 배포하신…..분은 없으실테니 vim 에디터로 만들어줍시다.
  • sudo npm run start:prod

npm run 돌렸는데 아래처럼 뭐 이런 에러 뜨면서 안 되면

0|main   | [Nest] 44811  - 02/23/2023, 4:13:54 PM   ERROR [NestApplication] Error: listen EACCES: permission denied 0.0.0.0:80 +3ms
0|main   | Error: listen EACCES: permission denied 0.0.0.0:80

sudo su 커맨드를 입력해서 슈퍼유저로 전환 후에 pm2 start dist/main.js 쳐서 실행해보세요. 그럼 됩니다.

2. 퍼블릭 IP를 고정 IP로 바꾸기

우선 우리 인스턴스 페이지로 가봅시다.

네트워크 탭을 눌러줍시다.

고정 IP연결 누르면은 고정IP로 바뀌면서 퍼블릭 IP 번호도 바뀌었을거에요.

이제 postman에서 [고정IP]/[route] 입력하고 실험해보시면 저렇게 될겁니다.

끝.

번외. 터미널로 SSH 연결하는 법

여기서 기본 키 다운로드 하면 뭐시깽이.pem 프라이빗 키 파일을 다운받게 되는데 그 파일을 적당한 곳에 보관하고 (필자의 경우 - /Users/jangseong-u/.ssh 폴더에 보관)

본론

  1. 프라이빗 키를 사용자만 읽고 쓸 수 있도록 하는 작업
sudo chmod 400 /path/to/private-key.pem
# sudo chmod 400 ./LightsailDefaultKey-ap-northeast-2.pem 이런식으로
  1. 아래 명령어를 입력하여 SSH를 통해 Lightsail에서 인스턴스에 연결
ssh -i /path/to/private-key.pem ubuntu@public-ip-address
# 해설 ssh -i [pem경로] ubuntu@퍼블릭IP나 고정IP
# ex_)ssh -i ./LightsailDefaultKey-ap-northeast-2.pem ubuntu@6.96.969.696

끝. 만약 안되시면 다른 블로그 글 구글링 하면서 도전해보세요^^

0개의 댓글