summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md159
1 files changed, 33 insertions, 126 deletions
diff --git a/README.md b/README.md
index 230e3440..6109961e 100644
--- a/README.md
+++ b/README.md
@@ -1,155 +1,62 @@
# SHI eVCP
-## 마이그레이션
+## 배포 가이드
-1. 마이그레이션을 위한 최소 압축
+1. 프로젝트 압축
```bash
-# zip 은 심볼릭 링크 정보가 누락되는 문제 있음
-# zip -r archive_$(date +%Y%m%d_%H%M%S).zip . -x "node_modules/*" "public/*" ".next/*" ".git/*" "tmp/*" "temp/*"
+zip -r archive-$(date +%Y%m%d_%H%M%S).zip . -x "./public/*" "./.git/*" "./.next/*" "./tmp/*" "./temp/*" "./.cursor/*" "./_docker/*"
-# h 옵션 필수임. 심볼릭링크 날려먹으면 node_modules 내부에서 문제생김.
-
-tar -czhvf archive_$(date +%Y%m%d_%H%M%S).tar.gz --exclude="node_modules" --exclude="public" --exclude=".next" --exclude=".git" --exclude="tmp" --exclude="temp" .
-
-zip -r archive-$(date +%Y%m%d_%H%M%S).zip . -x "./public/*" "./.git/*" "./.next/*" "./tmp/*" "./temp/*" "./.cursor/*"
-zip -r archive-$(date +%Y%m%d_%H%M%S).zip . -x "./public/*" "./.git/*" "./.next/*" "./tmp/*" "./temp/*" "./.cursor/*" "./node_modules/*"
+zip -r archive-$(date +%Y%m%d_%H%M%S).zip . -x "./public/*" "./.git/*" "./.next/*" "./tmp/*" "./temp/*" "./.cursor/*" "./node_modules/*" "./_docker/*"
```
-2. 전체 압축
+2. 내부망으로 이동해서 경로 생성 후 압축 풀기
-```bash
-# zip -r archive_$(date +%Y%m%d_%H%M%S).zip . -x ".git/*"
-
-# 1단계 상위 디렉토리에서 실행
-tar -czhf ./archive_$(date +%Y%m%d_%H%M%S).tar.gz \
- --exclude=".git" \
- --exclude="public" \
- --exclude=".next" \
- -C ./evcp .
-
-tar -czvf ./archive_$(date +%Y%m%d_%H%M%S).tar.gz \
- --exclude=".git" \
- --exclude="public" \
- --exclude=".next" \
- -C ./evcp .
-
-# .git 경로 제외 압축
-tar -czhf ./archive_$(date +%Y%m%d_%H%M%S).tar.gz --exclude=".git" \-C ./evcp .
-
-# 전달용
-tar -czhf ./archive_$(date +%Y%m%d_%H%M%S).tar.gz \
- --exclude=".next" \
- --exclude="public/*.zip" \
- -C ./evcp .
-```
+ - `mkdir destination && cd destination`
+ - SSH 연결 기반으로 파일 옮기기
+ - `unzip archive-xxx.zip`
-3. 압축 해제
+3. public, node_modules 복사
-```bash
-# 원본 구조 그대로 바로 풀기
-tar -xzvf archive_[date].tar.gz
+ - `cp -r current/node_modules/ 대상/`
+ - `cp -r current/public/ 대상/`
-# 특정 경로에 풀기
-tar -xzvf archive_20240101_123456.tar.gz -C /path/to/directory
+4. 환경변수 조정
+ - ide compare 기능 사용
+ - 외부개발서버, 개발서버(60.101.108.100), 품질서버(60.101.108.101), 운영서버(evcp.sevcp.com)는 환경변수를 환경에 맞게 변경해야 합니다. 현재 소스는 외부개발서버에 맞춰져 있으니, 배포시 환경변수를 그대로 사용할 수 없습니다.
-# 압축파일 미리보기
-tar -tzvf archive_20240101_123456.tar.gz
+5. 배포
+ - `pm2 stop evcp && npm run build && pm2 start evcp`
-# 특정 파일만 압축 해제하기
-tar -xzvf archive_20240101_123456.tar.gz path/to/specific/file
-```
+6. 기타 신경써야 할 부분
+ - `@/public/pdftronWeb` 경로에 `core`, `ui` 폴더를 복사
+ - `cp -r node_modules/@pdftron/webviewer/public/ public/pdftronWeb/`
+ - package.json 에서 next 명령어 실행할 때 `./node_modules/next/dist/bin/next`로 스크립트 변경한 이유는 import 관련 에러 처리 목적입니다.
-- `-x`: 압축 해제 (e**x**tract)
-- `-z`: gzip 압축 해제
-- `-v`: 압축 해제 과정 출력 (생략 가능)
-- `-f`: 파일 이름 지정
+### pm2 관련
-## 실행
+pm2는 쉘 연결이 종료되어도 프로그램을 계속 운영하기 위한 목적으로 사용합니다.
+현재는 간단한 설정으로 등록하여 사용하고 있습니다. (서버 재시작 대응등을 위해 추가 설정 필요)
-1. 종속성 설치 `npm i`
-2. pdfTron 라이브러리 복사
- `@/public/pdftronWeb` 경로에 `core`, `ui` 폴더를 복사
- - `cp -r node_modules/@pdftron/webviewer/public/ public/pdftronWeb/`
-3. 실행 `npm run dev`
+`pm2 start npm --name "evcp" -- start`
## 로컬 실행을 위한 DB 준비
1. postgres 17 버전을 준비 (환경변수에 따라 계정 및 데이터베이스 생성)
-2. drizzle-kit 으로 ORM to Database 처리
-3. 환경변수 선택을 위한 dotenv-cli 설치 `npm i -g dotenv-cli`
-
-development:
-
-```bash
-npx dotenv -e .env.production -- npx drizzle-kit push
-```
-
-production:
-
-```bash
-npx dotenv -e .env.development -- npx drizzle-kit push
-```
-
-3. 필요시 seeding 진행 (`@/db/` 경로 참조, drizzle 문서 확인)
+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 브랜치에서 새로운 브랜치 생성하기
-
-### github 사용하기
-
-1. 조직 내 팀에 개발 인원 추가
-2. 개발 인원은 깃허브 로그인 후 클론 & 작업 내역 PR
-
-인증 절차는 HTTPS, SSH 등 특정 방식으로 제한하고 있지는 않으며, 적절한 방법으로 진행하시면 됩니다.
-
-예시 상황: AWS EC2 - CentOS 에서 크레덴셜 셋업하기
-
-> ```bash
-> # GH 설치하기
-> # 저장소 파일 다운로드
-> sudo curl -L https://cli.github.com/packages/rpm/gh-cli.repo -o /etc/yum.repos.d/gh-cli.repo
->
-> # 저장소 활성화 및 설치
-> sudo yum install -y gh
->
-> # 인증 처리하기
-> gh auth login # 이후 CLI를 통해 인증처리 진행
-> ```
-
-[gh cli에 대해 알아보기](https://github.com/cli/cli)
-
-## SAML 2.0 SSO (For Knox Portal)
-# === [시작] SSO 설정 ===
-
-# ! SSO Redirect 주소로 활용되며, 상단에서 적절한 URL을 쓴다면 이 변수는 주석처리할 것
-# NEXTAUTH_URL="http://60.101.108.100"
-
-# SAML 2.0 SP로서 신청할 때 기입하는 사항
-# 메타데이터 XML에서 추출 가능하나, 개발 편의성을 위해 추출로직 제거하고 환경변수에 하드코딩함
-
-### sp_metadata.xml ###
-```bash
-SAML_SP_ENTITY_ID="SP 측 ID(사전 정의됨)"
-SAML_SP_CALLBACK_URL="SP 측이 콜백을 받을 주소(사전 정의됨)"
-# POST
-SAML_SP_ACS_BINDING_PRIMARY="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
-# Redirect
-SAML_SP_ACS_BINDING_SECONDARY="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
-SAML_SP_AUTHN_REQUESTS_SIGNED=false #(사전 정의됨)
-SAML_SP_WANT_ASSERTIONS_SIGNED=false #(사전 정의됨)
-
-### idp_metadata.xml ###
-SAML_IDP_ENTITY_ID="(수신한 메타데이터 기준으로 추출)"
-SAML_IDP_SSO_URL="(수신한 메타데이터 기준으로 추출. 이 위치로 브라우저는 사용자를 리다이렉트함)"
-SAML_IDP_CERT="BASE64로 인코딩된 IDP의 CERT"
-SAML_ENCRYPTION_METHOD="CERT 암호화 기법"
-``` \ No newline at end of file
+- 이전 전략
+ - main, dev 브랜치에 다이렉트 푸시 X (PR 사용)
+ - features 브랜치에서 새로운 브랜치 생성하기
+- 현재 전략
+ - dujinkim 브랜치에 작업사항을 직접 커밋 & 푸시합니다.