$ cd {프로젝트 경로}
$ npm i
$ npm run build
$ npm run start:prod
✅ 4. 실제 배포 환경처럼 pm2 활용해서 서버 실행시키기
$ sudo npm i -g pm2
$ pm2 start dist/main.js --name "backend-server"
$ pm2 list # 서버 잘 실행되고 있는 지 확인
$ pm2 logs # 서버 잘 실행됐는 지 로그 확인
✅ 5. 실제 코드가 업데이트 될 때 어떤 과정을 거쳐서 배포하는 지 짚어보기
내 컴퓨터에서 새로운 코드 작성
Commit 찍은 뒤 Github에 Push하기
EC2에 들어가서 Git Pull 받기
$ cd {프로젝트 경로}
$ git pull origin main
빌드 후 재배포하기
$ npm i
$ npm run build
$ pm2 kill
$ pm2 start dist/main.js --name "backend-server"
✅ 6. 매번 Github 계정과 비밀번호를 치는 과정 없애기
배포를 할 때마다 Github 계정과 비밀번호를 일일이 치는 과정이 포함되어 있으면 배포를 자동화할 수가 없다. 따라서 최초 한 번만 작성하고 그 이후에는 Github 계정과 비밀번호를 입력하지 않아도 되게 만들어보자.
$ git config --global credential.helper store
$ git pull origin main
# Github 계정 및 비밀번호 입력
$ git pull origin main # 더 이상 비밀번호를 안 묻는 걸 확인할 수 있다.
참고
이 방식은 ~/.git-credentials에 로그인 정보를 저장해둠으로써 github 계정과 비밀번호를 따로 묻지 않는 방식이다. 이 방식의 단점은 EC2에 접근할 수 있는 모든 사용자가 내 Github 정보를 볼 수 있다는 점이 단점이다.
✅ 7. 지금까지 했던 코드 배포 과정을 자동화하기
.github/workflows/deploy.yml 작성하기
name: Deploy To EC2
on:
push:
branches:
- main
jobs:
Deploy:
runs-on: ubuntu-latest
steps:
- name: SSH로 EC2에 접속하기
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.EC2_HOST }} # EC2의 주소
username: ${{ secrets.EC2_USERNAME }} # EC2 접속 username
key: ${{ secrets.EC2_PRIVATE_KEY }} # EC2의 Key 파일의 내부 텍스트
script_stop: true # 아래 script 중 실패하는 명령이 하나라도 있으면 실패로 처리
script: |
cd /home/ubuntu/instagram-server # 여기 경로는 자신의 EC2에 맞는 경로로 재작성하기
git pull origin main
npm i
npm run build
pm2 kill
pm2 start dist/main.js --name "backend-server"