diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 159 |
1 files changed, 33 insertions, 126 deletions
@@ -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 브랜치에 작업사항을 직접 커밋 & 푸시합니다. |
