From 833a957d9ed5ad8098532957028c68f54a4b1d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sat, 21 Feb 2026 15:50:02 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20[react]=20React=20=EB=B9=8C=EB=93=9C/?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20=EC=A0=95=EC=B1=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 서버 빌드 금지, 로컬 빌드 후 배포 정책 명시 - 프로젝트 경로에 react 추가 --- CLAUDE.md | 64 +++++++++++++++++++++++++++++++++ sam/docker/api/supervisord.conf | 2 +- sam/docker/mng/supervisord.conf | 2 +- 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index dedcb49..778f582 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -116,11 +116,75 @@ fix: [auth] 로그인 시 세션 만료 오류 수정 |------|------|-----------| | `/home/aweso/sam/mng` | 관리자 웹 (Laravel) | 독립 저장소 | | `/home/aweso/sam/api` | API 서버 (Laravel) | 독립 저장소 | +| `/home/aweso/sam/react` | 프론트엔드 (Next.js) | 독립 저장소 | **각 폴더는 독립적인 Git 저장소입니다. 해당 폴더에서 git 명령을 실행해야 합니다.** --- +## React 빌드/배포 정책 (필수 규칙) + +> **경고: React(Next.js) 빌드는 반드시 로컬에서 실행합니다. 서버에서 빌드 절대 금지!** + +### 배경 + +서버 스펙(2코어, 3.8GB RAM, Swap 없음)으로는 Next.js 빌드 시 메모리 부족으로 20분 이상 소요되거나 실패한다. +로컬(WSL)에서 빌드 후 결과물만 서버에 배포한다. + +### 금지 사항 + +``` +❌ 서버에서 npm run build 실행 금지 +❌ 서버 SSH 접속 후 빌드 명령 실행 금지 +❌ Claude가 직접 npm run build 실행 금지 (로컬 포함) +``` + +### 빌드/배포 방법 + +``` +로컬 (WSL) 서버 (114.203.209.83) +┌─────────────────┐ ┌─────────────────┐ +│ npm run build │ ── rsync ──→ │ node server.js │ +│ (standalone) │ │ (포트 3001) │ +└─────────────────┘ └─────────────────┘ +``` + +**배포 스크립트**: `/home/aweso/sam/react/deploy.sh` + +```bash +# 개발 서버 배포 +cd /home/aweso/sam/react +./deploy.sh dev +``` + +### standalone 모드 + +- `next.config.ts`에 `output: 'standalone'` 설정됨 +- 서버에 `node_modules` 불필요 (빌드 결과물에 필요한 것만 포함) +- 서버에서는 `node server.js`로 실행 + +### 빌드가 필요한 상황 + +사용자에게 다음과 같이 안내한다: + +``` +React 코드가 변경되었습니다. 배포하려면: +cd /home/aweso/sam/react && ./deploy.sh dev +``` + +### 서버 정보 + +| 항목 | 값 | +|------|-----| +| 서버 주소 | `114.203.209.83` | +| SSH 유저 | `hskwon` | +| 프로젝트 경로 | `/home/webservice/react` | +| 실행 포트 | `3001` | +| 도메인 | `dev.codebridge-x.com` | +| 로그 | `/tmp/sam-react.log` | + +--- + ## 데이터베이스 아키텍처 (필수 규칙) > **경고: 이 규칙을 반드시 준수하세요!** diff --git a/sam/docker/api/supervisord.conf b/sam/docker/api/supervisord.conf index 6010bfe..be1dada 100755 --- a/sam/docker/api/supervisord.conf +++ b/sam/docker/api/supervisord.conf @@ -8,7 +8,7 @@ command=/usr/local/sbin/php-fpm command=nginx -g "daemon off;" [program:queue-worker] -command=php /var/www/api/artisan queue:work database --sleep=3 --tries=3 --timeout=1800 --max-jobs=100 --max-time=3600 +command=php /var/www/api/artisan queue:work database --queue=api,default --sleep=3 --tries=3 --timeout=1800 --max-jobs=100 --max-time=3600 process_name=%(program_name)s_%(process_num)02d numprocs=1 directory=/var/www/api diff --git a/sam/docker/mng/supervisord.conf b/sam/docker/mng/supervisord.conf index 09f47c3..acdf92b 100755 --- a/sam/docker/mng/supervisord.conf +++ b/sam/docker/mng/supervisord.conf @@ -8,7 +8,7 @@ command=/usr/local/sbin/php-fpm command=nginx -g "daemon off;" [program:queue-worker] -command=php /var/www/mng/artisan queue:work database --sleep=3 --tries=1 --timeout=1800 --max-jobs=10 --max-time=3600 +command=php /var/www/mng/artisan queue:work database --queue=mng,default --sleep=3 --tries=1 --timeout=1800 --max-jobs=10 --max-time=3600 process_name=%(program_name)s_%(process_num)02d numprocs=2 directory=/var/www/mng