[GCP/배포]scp 사용하여 배포 스크립트 작성하기

2024. 10. 30. 10:09·BE

서버 내에서 npm run build 를 통하여 배포를 하는 것보다는 로컬에서 해당 명령어를 사용하여 빌드된 파일을 서버 안에 덮어 씌어주는 방법이 더 안정적이라 생각하여 관련 스크립트를 만들게 되었다.

로컬의 파일을 서버 내로 전송해주는 명령어가 scp 라고 한다. full command 로는 다음과 같다.

scp -i ~/.ssh/[ssh_key] -r [빌드 된 폴더] [서버계정명]@[서버IP]:/[전송해줄경로(절대경로)]

예를 들어, ssh 키 명이 test이고, 빌드된 폴더가 /dist 폴더, 서버 내부에 덮어쓸 경로가 /home/project/dist 라고 하면 다음과 같이 적을 수 있을 것이다.

scp -i ~/.ssh/test -r ./dist test@0.0.0.0:/home/project

프로젝트 경로의 경우, 서버에 접속하여 해당 폴더 위치에서 pwd를 해주어 나오는 경로를 복사하여 붙여 넣어주자!

  • 추가로 해당 명령어를 실행하여면 접근 권한이 있어야 한다.
  • ls -al로 봤을 때 폴더에 대한 소유권이 root로 되어있다면, 접속하려는 계정(test)에게 해당 폴더에 대한 소유권을 부여해주자

내가 짜려는 스크립트는 다음과 같다.

1. 빌드가 되면, 먼저 해당 서버에 접속하여 깃을 풀 받고, 서버 내 프로젝트의 dist 파일을 한번 지워주고 
   새로 생성한다.
2. 빌드 된 dist 파일을 서버 내 지정한 경로안에 덮어씌어준다.
3. 포트 7000번 서버 재실행.

1번에서 dist 폴더를 삭제하고 새로 생성한 것은 개인적으로 이게 더 확실하게 새로 덮어 씌어질 것 같아 추가하였다.

코드로 짠 스크립트는 아래와 같다. .gitignore 에 해당 파일이 올라가지 않도록 작성하였다.

build.sh

ssh -i ~/.ssh/ssh_key hajung3406@34.64.49.91 "cd careerhub/CareerHub-NestJS && git checkout . && git pull origin main && rm -rf dist && mkdir -p dist"
scp -i ~/.ssh/ssh_key -r ./dist hajung3406@34.64.49.91:/home/hajung3406/careerhub/CareerHub-NestJS
ssh -i ~/.ssh/ssh_key hajung3406@34.64.49.91 "cd careerhub/CareerHub-NestJS && pm2 kill && pm2 start ecosystem.config.js"

이후 package.json 스크립트 build 부분을 다음으로 수정해준다.

"build": "nest build && ./build.sh",

build 가 실행될 때 바로 되거나 deploy라는 명령어를 추가해주는 것도 나쁘지 않은 방법이다.

'BE' 카테고리의 다른 글

[NestJS] 기본 설치 및 폴더구조 알아보기  (0) 2024.10.30
[GCP/nginx] SSL 인증서 발급받아 직접 로드밸런서 설정해주기  (4) 2024.10.30
[GCP/DNS] 도메인 DNS사용하여 등록하기 (+로드밸런서 생성)  (0) 2024.10.30
[GCP/Domain] GCP 에서 도매인 구매하고 등록하기 (미국 리전으로..)  (0) 2024.10.30
[GCP]방화벽 설정 및 연결 테스트  (1) 2024.10.30
'BE' 카테고리의 다른 글
  • [NestJS] 기본 설치 및 폴더구조 알아보기
  • [GCP/nginx] SSL 인증서 발급받아 직접 로드밸런서 설정해주기
  • [GCP/DNS] 도메인 DNS사용하여 등록하기 (+로드밸런서 생성)
  • [GCP/Domain] GCP 에서 도매인 구매하고 등록하기 (미국 리전으로..)
웹개발주인장
웹개발주인장
안녕하세요 :) velog와 티스토리를 동시에 운영중에 있습니다! https://velog.io/@hannah3406
  • 웹개발주인장
    Hannah
    웹개발주인장
  • 전체
    오늘
    어제
    • 분류 전체보기 (27)
      • FE (17)
      • BE (10)
      • 개발CS (0)
      • 잡담 (0)
      • 토이프로젝트 (0)
  • 인기 글

  • 태그

    pm2
    certbot
    nestjs
    서버
    node.js
    Nginx
    react-window
    WINDOWING
    Nextjs
    로드밸런서
    react-chartjs-2
    chartjs2
    배포
    gcp 도메인
    TypeScript
    reactflow
    트리구조
    Google Cloud Platform
    무한스크롤
    chartjs click
    다이어그램
    chartjs
    GCP
    scp명령어
    infinite scroll
    ssl 인증
    typscript
    google clioud platform
    react
    HTTPS
  • hELLO· Designed By정상우.v4.10.0
웹개발주인장
[GCP/배포]scp 사용하여 배포 스크립트 작성하기
상단으로

티스토리툴바