From ff45871d221e6da46638cdf2af73321b78690799 Mon Sep 17 00:00:00 2001 From: choibk Date: Sun, 25 Jan 2026 00:15:11 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9A=B4=EC=98=81=20=EA=B0=80=EC=9D=B4?= =?UTF-8?q?=EB=93=9C=20=EA=B0=95=ED=99=94:=20=EC=95=88=EC=A0=84=20?= =?UTF-8?q?=EC=A4=91=EC=8B=AC=EC=9D=98=20=ED=86=B5=ED=95=A9=20=EA=B3=B5?= =?UTF-8?q?=EC=A0=95(Checklist)=20=EA=B5=AC=EC=A1=B0=EB=A1=9C=20=EA=B0=9C?= =?UTF-8?q?=ED=8E=B8=20=EB=B0=8F=20=EA=B2=BD=EA=B3=A0=20=EB=AC=B8=EA=B5=AC?= =?UTF-8?q?=20=EA=B0=95=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/git 운영 규칙.md | 75 ++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/docs/git 운영 규칙.md b/docs/git 운영 규칙.md index 519279f..3d90e29 100644 --- a/docs/git 운영 규칙.md +++ b/docs/git 운영 규칙.md @@ -56,62 +56,63 @@ git push origin v0.3.5 --- -## 3. 운영 서버 수동 업데이트 및 백업 절차 (Manual Update Full Process) +## 3. 운영 서버 수동 업데이트 통합 공정 [작업 전 필수 확인] -웹 UI 업데이트가 실패하거나 SSH 터미널에서 직접 제어해야 할 경우 사용합니다. 모든 명령어는 **운영 서버(시놀로지)** 환경 기준입니다. -* **서비스 경로**: `/volume1/web/smartims` -* **백업 경로**: `/volume1/backup/smart_ims` +운영 환경에서 작업을 수행할 때는 **반드시 아래 순서를 1번부터 차례대로 수행**하십시오. 단계를 건너뛸 경우 데이터 유실 시 복구가 불가능합니다. --- -### STEP 1: [필수] 안전을 위한 사전 데이터 백업 -업데이트 전, 현재 상태를 보관하기 위해 이미지와 DB를 백업 폴더에 저장합니다. +### 🚨 [STEP 1] 데이터 백업 (무조건 수행 - 예외 없음) +업데이트 명령을 입력하기 전, 현재의 이미지 파일과 데이터베이스를 안전 경로(`/volume1/backup/smart_ims`)로 격리합니다. -#### 1-1. 업로드 이미지 압축 백업 +#### 1-1. 업로드 파일(이미지/매뉴얼) 백업 ```bash -# [위치: /volume1/web/smartims] +# [실행 위치: /volume1/web/smartims] +# 이 명령은 등록된 모든 자산 이미지를 압축하여 보관합니다. tar -czvf /volume1/backup/smart_ims/backup_images_$(date +%Y%m%d).tar.gz server/uploads/ ``` -#### 1-2. 데이터베이스(DB) 덤프 백업 +#### 1-2. 데이터베이스(DB) 전체 백업 ```bash -# [위치: /volume1/web/smartims] -# 시놀로지 MariaDB 10 전용 계정(choibk) 및 포트(3307) 사용 +# [실행 위치: /volume1/web/smartims] +# DB명: sokuree_platform_prod, 포트: 3307 사용 /usr/local/mariadb10/bin/mysqldump -u choibk -p --port 3307 sokuree_platform_prod > /volume1/backup/smart_ims/backup_db_$(date +%Y%m%d).sql ``` +> **주의**: 비밀번호 요청 시 `.env` 파일의 `DB_PASSWORD`(`^Ocean...`)를 입력하세요. --- -### STEP 2: 원격 정보 확인 및 체크아웃 -최신 소스를 가져오고 특정 버전으로 전환합니다. +### 🚀 [STEP 2] 버전 동기화 및 코드 반영 +백업이 완료된 것이 확인된 경우에만 아래 명령어를 실행하여 소스를 업데이트합니다. ```bash -# [위치: /volume1/web/smartims] +# [실행 위치: /volume1/web/smartims] -# 1. 원격 저장소의 최신 태그 목록 확인 +# 1. 원격 저장소의 태그 목록 확인 (배포된 최신 버전이 무엇인지 체크) git ls-remote --tags origin -# 2. 태그 정보 강제 업데이트 (원격 정보를 로컬로 완벽 동기화) +# 2. 로컬 태그 정보를 원격과 완벽히 일치 (강제 동기화) git fetch origin +refs/tags/*:refs/tags/* --force --prune --prune-tags -# 3. 대상 버전(태그)으로 강제 체크아웃 +# 3. 목표 버전으로 소스 코드 강제 전환 (예: v0.3.5) +# [주의] 이 명령 실행 시 추적되지 않은 소스 수정사항은 사라집니다. git checkout -f v0.3.5 ``` --- -### STEP 3: 프론트엔드 빌드 및 의존성 업데이트 +### 🏗️ [STEP 3] 시스템 빌드 및 서비스 재시작 +코드가 반영되었다면 변경된 내용을 적용하기 위해 빌드와 프로세스를 갱신합니다. + +#### 3-1. 프론트엔드 빌드 ```bash -# [위치: /volume1/web/smartims] -npm install -npm run build +# [실행 위치: /volume1/web/smartims] +npm install && npm run build ``` ---- - -### STEP 4: 백엔드 반영 및 서비스 재시작 +#### 3-2. 백엔드 반영 및 PM2 재시작 ```bash -# [위치: /volume1/web/smartims/server] +# [실행 위치: /volume1/web/smartims/server] cd server npm install pm2 reload smartims-api @@ -119,18 +120,19 @@ pm2 reload smartims-api --- -### STEP 5: [비상시] 데이터 복구 절차 (Restore) -업데이트 중 문제가 발생하여 이전 상태로 되돌려야 할 경우에만 수행합니다. +### 🆘 [STEP 4] 비상시 복구 절차 (Emergency Restore) +만약 업데이트 후 시스템이 작동하지 않거나 데이터가 보이지 않을 경우에만 수행합니다. -#### 5-1. 이미지 복구 (압축 해제) +#### 4-1. 이미지 파일 복원 ```bash -# [위치: /volume1/web/smartims] +# [실행 위치: /volume1/web/smartims] +# 작업 당일 생성한 압축파일 이름을 확인하여 입력하세요. tar -xzvf /volume1/backup/smart_ims/backup_images_[날짜].tar.gz -C ./ ``` -#### 5-2. 데이터베이스(DB) 복원 +#### 4-2. 데이터베이스(DB) 복원 ```bash -# [위치: /volume1/web/smartims] +# [실행 위치: /volume1/web/smartims] /usr/local/mariadb10/bin/mysql -u choibk -p --port 3307 sokuree_platform_prod < /volume1/backup/smart_ims/backup_db_[날짜].sql ``` @@ -149,9 +151,8 @@ tar -xzvf /volume1/backup/smart_ims/backup_images_[날짜].tar.gz -C ./ --- -## 💡 최종 주의사항 -1. **DB 계정 확인**: 위 명령어의 `-u choibk`는 본 시스템의 데이터베이스 사용자명입니다. 비밀번호 요청 시 `.env` 파일에 기록된 `DB_PASSWORD`를 입력하십시오. -2. **실행 위치 확인**: 특히 `pm2` 명령어나 `server` 관련 설정은 반드시 `server` 폴더 내에서 실행하거나 경로를 정확히 지정해야 합니다. -3. **경로 이동 주의**: `cd server`를 통해 폴더를 이동하여 작업을 마친 후에는 반드시 `cd ..`를 통해 다시 루트 폴더로 복귀하여 다음 작업에 혼선이 없도록 합니다. -4. **권한 관리**: 운영 서버에서는 반드시 서비스 실행 권한을 가진 계정으로 명령어를 실행해야 `PM2` 프로세스 관리에 문제가 생기지 않습니다. -5. **수동 설치 주의**: `git clone`을 새로 받아 설치할 때는 기존 `uploads` 폴더가 포함되어 있지 않으므로 반드시 위 **복구 절차**를 통해 데이터를 복구해야 자산 이미지가 나타납니다. +## 💡 최종 주의사항 (Must Read) +1. **DB 계정 확인**: `-u choibk` 계정은 본 시스템 전용 계정입니다. 운영 서버 접속 시 `root` 권한이더라도 DB 작업은 `choibk`로 수행해야 권한 꼬임이 없습니다. +2. **경로 이동 주의**: `cd server` 이동 후 빌드가 끝나면 `cd ..`를 통해 반드시 루트로 돌아오십시오. +3. **수동 설치 주의**: `git clone`을 새로 받아 설치할 때는 기존 `uploads` 폴더가 포함되어 있지 않으므로 반드시 위 **STEP 4-1 복구 절차**를 통해 이미지를 채워넣어야 합니다. +4. **자동 업데이트 정책**: 시스템 관리 메뉴의 **[자동 업데이트]**는 내부적으로 소스 코드만 갱신하며 `uploads` 폴더는 건드리지 않습니다. 따라서 자동 업데이트 시에는 별도의 이미지 복구가 필요 없습니다.