본문 바로가기
개발 노트/아티클 읽기

3. 서비스 배포할때 주의할 점

by LeeInGyu 2025. 3. 9.

서비스 배포할때 주의할 점

출처

!서비스 배포할때 주의할 점(링크드인)

주의할 점

  1. 개발 환경에서 사용되는 도메인을 배포 환경에서 그대로 사용

    • 개발 환경과 배포 환경의 도메인을 명확히 구분해서 사용하기
  2. 테스트용 계정과 비밀번호도 함께 배포되는 이슈

    • 위와 동일하게 명확히 구분해서 사용하기
    • 데이터베이스를 나눈다거나 하는 방법이 있지 않을까?
  3. api key가 내장된 채로 서비스 배포

    • 유출되었을 경우 API 키를 즉시 폐기(폐기 후 재생성)
    • API 키를 하드코딩하지 않고 안전하게 관리(Ex. .env 사용)
    • 서버에 환경변수 직접 설정해서 사용하기

Truble Shooting

문제: Github에 API가 함께 올라갔을 경우

해결방법: 과거 기록 포함 기록을 삭제

1. 파일에서 API 키 삭제

git rm —cached {file name}

2. 과거 커밋 기록에서도 삭제

git filter-branch --force --index-filter \
“git rm --cached --ignore-unmatch {file name} \
--prune-empty --tag-name-filter cat -- --all
git filter-branch --force
  • Git의 모든 커밋 내역에서 특정 파일을 삭제
  • Git 브랜치를 수정하여 커밋 내역을 변경하는 명령어
--index-filter "git rm --cached --ignore-unmatch {file name}"
  • 파일명이 포함된 모든 과거 커밋에서 해당 파일을 제거
  • 스테이징 영역에서 특정 파일을 제거
--prune-empty
  • 파일 삭제 후 비어 있는 커밋 자동 삭제
--tag-name-filter cat
  • Git 태그가 있으면, 태그를 유지하면서 커밋 내역을 수정
-- --all
  • -- 뒤에 git 브랜치 지정
  • --all은 모든 브랜치와 태그에 해당 내용을 적용하는 것

3. 로컬 저장소 기록에서도 삭제

rm -rf .git/refs/original/
  • 과거 백업 데이터를 지우고, 삭제된 파일 완전 삭제
git reflog expire --expire=now --all
  • 삭제된 파일이 추적되지 않도록 모든 과거 작업 기록 완전 삭제
  • --all로 인해 모든 브랜치가 대상이 됨
git gc --prune=now
  • 삭제된 커밋 및 파일을 완전 삭제
  • 불필요한 데이터 블록을 제거로 디스크 공간 확보
git gc --aggressive --prune-now
  • 저장소를 최대한 압축하여, 삭제된 파일이 완전 삭제되도록 보장

4. 원격 저장소 강제 푸시

git push origin --force --all
728x90
반응형