배포 기록 - boostcampwm-2022/web33-Mildo GitHub Wiki

🚩 구현 목표

  • CI/CD 수정
  • https 설정

🖥️ 구현 내용

환경 변수 변경

  • 새로 늘어난 환경 변수를 모두 추가
  • mongoDB의 URI는 쌍따옴표를 붙여서 생성

Working Directory 설정

  • 쌍따옴표를 떼고 써야 내용물이 분리됨?!
  • script_components를 설정해주면 됨?! → 이게 맞음!!
    • 숫자를 입력하면 해당 숫자만큼 상위 컴포넌트 제거

🚧 Trouble Shooting

  • /server/server → 계층이 하나 더 생겨서 제대로 파일이 실행되지 않는 문제 발생

스크린샷 2022-12-01 오후 2.53.26.png

  • 해결책 1 → ‘**strip_component: 1’**을 이용해서 계층을 한단계 지움

폴더 통째로 복사되는 오류

- name: 클라이언트 빌드 폴더 복사
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          password: ${{ secrets.PASSWORD }}
          port: ${{ secrets.PORT }}
          source: client/build
          target: "/usr/share/nginx/html/"
  • /usr/share/nginx/html 폴더 아래에 client/build 에 있는 파일이 복사될 줄 알았지만, 실제로는 복사된 파일 뿐만 아니라 폴더의 경로까지 통째로 복사해버려 /usr/share/nginx/html/client/build 가 되었다.
- name: 클라이언트 빌드 폴더 복사
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          password: ${{ secrets.PASSWORD }}
          port: ${{ secrets.PORT }}
          source: client/build
          target: "/usr/share/nginx/html"
					strip_components: 1
  • strip_components 속성을 넣어주어 해결

node_modules 복사

  • 클라이언트, api서버, cron 서버 모두 build된 파일만을 원격 서버에 복사
  • 클라이언트는 build 시 관련된 파일을 모두 import 하여 하나의 파일로 생성하지만 api 서버와 cron 서버는 build 시 타입스크립트 컴파일만 해주기 때문에 외부 라이브러리가 제대로 설치되어 있지 않음
  • yarn

yarn 실행 오류

환경변수가 적용 안되는 이유

  • pm2로 실행 시 환경변수를 가져오지 못함

  • 기존 코드

    pm2 start web33-Mildo/server/dist/src/app.js
    
    • dotenv.config()는 현재 실행시킨 디렉토리를 기준으로 path를 가져오는 듯 함
    • 그래서 만약 어떤 위치에서 실행시키건 간에 환경변수를 적용시키고 싶다면 dotenv.config() option의 path를 통해 지정해 줄 수 있음
  • 변경 코드

    cd web33-Mildo/server/dist
    pm2 start src/app.js
    
    • .env가 위치한 디렉토리로 이동한 후 실행시킴
    • dotenv가 정확히 .env 파일이 어디에 있는지에 따라 적용되는지 알아보자