문헌 열람실 > 2025-12-07_동적항모_통합배포_성공보고서
Y

description2025-12-07_동적항모_통합배포_성공보고서

folderRoot

동적 항모와 전투기 데브옵스 (DevOps) 성공 보고서

작업 일자: 2025-12-07 작업 목표: Next.js (동적 항모)와 정적 앱 (전투기: AgriBot, Skin Clinic)의 통합 및 안정적 배포

1. 달성 내용

  • 어그리봇(AgriBot) 안정판 배포: 로컬에서 개발된 최신 버전을 서버의 /robot-control/agribot 경로에 성공적으로 탑재했습니다.
  • Next.js 라우팅 충돌 해결: Link 컴포넌트가 정적 파일 경로를 인식하지 못해 발생한 404 문제를 <a> 태그로 교체하여 해결했습니다.
  • 좀비 프로세스 퇴치: 포트 3000번을 점유하던 유령 프로세스를 fuser -k로 제거하여 서버를 정상화했습니다.
  • 배포 자동화: 배포준비.bat 스크립트를 통해 실수 없이 깔끔한 배포 패키지를 생성하도록 만들었습니다.

2. 핵심 전략: 항모와 전투기

이 프로젝트는 거대한 동적 항모(Next.js) 위에 **날렵한 전투기(Static Apps)**를 싣고 다니는 구조입니다.

⛴️ 동적 항모 (Next.js Dashboard)

  • 역할: 전체 사이트의 뼈대(Header, Sidebar)와 인증, 서버 API(Gemini 연결)를 담당합니다.
  • 위치: D:\1v\Cursor\Projects\dashboard_ui
  • 중요 파일: src/components/Shell.tsx (네비게이션), next.config.js

✈️ 전투기 (AgriBot, Skin Clinic)

  • 역할: 실제 사용자에게 보여지는 핵심 기능(음성 제어, 예약 등)입니다.
  • 개발 장소: D:\1v\Antigravity (여기가 바로 **"정비소"**입니다)
  • 탑재 장소: D:\1v\Cursor\Projects\dashboard_ui\public (여기가 **"갑판"**입니다)

3. 배포 워크플로우 (요약)

1단계: 정비 (개발)

  • 피부과_정비.bat 또는 어그리봇_정비.bat를 켜서 뚝딱뚝딱 개발합니다. (Hot Reload 지원)

2단계: 완성품 탑재 (빌드)

  • 개발이 끝나면 npm run build로 완성품(dist)을 만듭니다.
  • 완성품을 항모의 갑판(public/폴더)으로 복사합니다.

3단계: 출격 (배포)

  1. 배포준비 실행: deploy_ready 폴더 생성.
  2. 서버 업로드: 서버의 Dashboard_UI 폴더 덮어쓰기.
  3. 서버 재기동:
    npm install
    npm run build
    pm2 delete all  (혹시 모를 충돌 방지)
    pm2 start npm --name "dashboard_ui" -- start
    pm2 save
    

4. 트러블슈팅 매뉴얼

Q. 서버에 올렸는데 옛날 화면이 나와요!

A. 좀비 프로세스 때문입니다.

sudo fuser -k 3000/tcp  # 3000번 포트 강제 해방
pm2 restart dashboard_ui

Q. 메뉴를 눌렀는데 404가 떠요!

A. Next.js가 정적 파일을 무시해서 그렇습니다.

  • Shell.tsx에서 해당 메뉴의 Link 태그를 <a> 태그로 바꿔주세요. (새로고침이 발생하더라도 안전합니다)

Q. 빌드 에러 (EACCES, errno -4094)

A. 파일이 잠겨있거나 권한 문제입니다.

  • 로컬: 동적홈_복구.bat 실행 (캐시 청소)
  • 서버: sudo chown -R ubuntu:ubuntu . 로 권한 재설정

보고자: Antigravity (Google DeepMind Agent)