# SHI eVCP ## 배포 가이드 1. 프로젝트 압축 ```bash zip -r public/archive-$(date +%Y%m%d-%H%M%S).zip . -x "./public/*" "./.git/*" "./.next/*" "./tmp/*" "./temp/*" "./.cursor/*" "./_docker/*" "./db/migrations/*" zip -r public/archive-$(date +%Y%m%d-%H%M%S).zip . -x "./public/*" "./.git/*" "./.next/*" "./tmp/*" "./temp/*" "./.cursor/*" "./node_modules/*" "./_docker/*" "./db/migrations/*" ``` 2. 내부망으로 이동해서 경로 생성 후 압축 풀기 - `mkdir destination && cd destination` - SSH 연결 기반으로 파일 옮기기 - `unzip archive-xxx.zip` 3. public, node_modules 복사 - `cp -r current/node_modules/ 대상/` - `cp -r current/public/ 대상/` 4. 환경변수 조정 - ide compare 기능 사용 - 외부개발서버, 개발서버(60.101.108.100), 품질서버(60.101.108.101), 운영서버(evcp.sevcp.com)는 환경변수를 환경에 맞게 변경해야 합니다. 현재 소스는 외부개발서버에 맞춰져 있으니, 배포시 환경변수를 그대로 사용할 수 없습니다. - **필수 환경변수:** (자세한 내용은 하단 "결재 시스템" 섹션 참고) - `NEXT_PUBLIC_BASE_URL`: 애플리케이션 Base URL - 개발: `http://localhost:3000` - 운영: `https://sevcp.com` - `REVALIDATION_SECRET`: (선택) Revalidation API 보안 키 5. 배포 - `pm2 stop evcp && npm run build && pm2 start evcp` 6. 기타 신경써야 할 부분 - `@/public/pdftronWeb` 경로에 `core`, `ui` 폴더를 복사 - `cp -r node_modules/@pdftron/webviewer/public/ public/pdftronWeb/` - package.json 에서 next 명령어 실행할 때 `./node_modules/next/dist/bin/next`로 스크립트 변경한 이유는 import 관련 에러 처리 목적입니다. ### pm2 관련 pm2는 쉘 연결이 종료되어도 프로그램을 계속 운영하기 위한 목적으로 사용합니다. ecosystem.config.js 파일을 기준으로 설정합니다. 시작하려면, `pm2 start ecosystem.config.js` 명령어를 입력하세요. ## 로컬 실행을 위한 DB 준비 1. postgres 17 버전을 준비 (환경변수에 따라 계정 및 데이터베이스 생성) 2. drizzle-kit 으로 ORM to Database 처리 (generate 후 생성 쿼리 실행) - drizzle-kit 버그로 인해 migrate 불가 3. (선택) 환경변수 선택을 위한 dotenv-cli 설치 `npm i -g dotenv-cli` ## 주의사항 - **generate 로 생성한 저널과 쿼리는 깃에 push 하지 마세요.** - 개발한 부분과 관련없는 부분에 대해 포매팅 변경사항을 만들지 마세요. - 자동 포맷 기능을 종료해두세요 (vscode, prettier, biome 등) - formatOnSave 옵션을 비활성화하는 설정이 `.vscode/settings.json` 설정에 작성되어 있습니다. ## 협업전략 - 이전 전략 - main, dev 브랜치에 다이렉트 푸시 X (PR 사용) - features 브랜치에서 새로운 브랜치 생성하기 - 현재 전략 - dujinkim 브랜치에 작업사항을 직접 커밋 & 푸시합니다.