From 3dd980474fe6b48210f0ac9c00d4a625004d3246 Mon Sep 17 00:00:00 2001 From: dsyoon Date: Fri, 3 Apr 2026 20:53:29 +0900 Subject: [PATCH] init --- README.md | 84 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 66 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 7ae8cd8..01f6d0f 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ ## 프로젝트 구조 ```text -webplatform/ +ai_platform/ ├─ server.js # Express 서버 진입점 (라우팅, 업로드, 썸네일 큐, DB 연동) ├─ package.json # 의존성 및 npm 스크립트 ├─ .env # 환경 변수 (실제 값, .gitignore 대상) @@ -146,10 +146,11 @@ PPT 썸네일·슬라이드 이미지는 **macOS**에서는 `qlmanage`가 우선 2. **코드 받기** ```bash - mkdir -p ~/apps && cd ~/apps - git clone <저장소 URL> webplatform - cd webplatform + mkdir -p ~/workspace && cd ~/workspace + git clone <저장소 URL> ai_platform + cd ai_platform ``` + (이미 클론한 경우 예: `cd /Users/dsyoon/workspace/ai_platform`) 3. **의존성·환경** ```bash @@ -165,8 +166,7 @@ PPT 썸네일·슬라이드 이미지는 **macOS**에서는 `qlmanage`가 우선 5. **실행 방식 선택** - **포그라운드(테스트)**: `npm start` → 터미널에 `Server started: http://localhost:8030` 확인 후 브라우저 접속 - - **백그라운드(운영에 가깝게)**: `npm install -g pm2` 후 - `pm2 start server.js --name webplatform && pm2 save` + - **백그라운드(PM2)**: 아래 「[PM2로 실행](#pm2로-실행)」 절 참고 (`pm2 start … --name ai_platform`) 6. **접속** 같은 Mac에서: `http://127.0.0.1:8030` (또는 `.env`의 `PORT`). 다른 기기에서 접속하려면 `HOST=0.0.0.0`이 기본이므로, **macOS 방화벽**에서 Node 허용 여부를 확인합니다. @@ -175,7 +175,7 @@ PPT 썸네일·슬라이드 이미지는 **macOS**에서는 `qlmanage`가 우선 ### Linux에서 배포 (새 서버) -배포 경로는 예시로 `/var/www/webplatform`을 둡니다. 배포 사용자·그룹(`www-data` 등)은 배포 정책에 맞게 조정하세요. +배포 경로는 예시로 `/var/www/ai_platform`을 둡니다. 배포 사용자·그룹(`www-data` 등)은 배포 정책에 맞게 조정하세요. 1. **시스템 패키지** (Ubuntu/Debian 예시) ```bash @@ -190,9 +190,9 @@ PPT 썸네일·슬라이드 이미지는 **macOS**에서는 `qlmanage`가 우선 ```bash sudo mkdir -p /var/www cd /var/www - sudo git clone <저장소 URL> webplatform - cd webplatform - sudo chown -R "$USER:$USER" /var/www/webplatform # 이후 작업 사용자에 맞게 조정 + sudo git clone <저장소 URL> ai_platform + cd ai_platform + sudo chown -R "$USER:$USER" /var/www/ai_platform # 이후 작업 사용자에 맞게 조정 ``` 3. **의존성·환경** @@ -210,8 +210,8 @@ PPT 썸네일·슬라이드 이미지는 **macOS**에서는 `qlmanage`가 우선 5. **프로세스 관리 (PM2 권장)** ```bash sudo npm install -g pm2 - cd /var/www/webplatform - pm2 start server.js --name webplatform + cd /var/www/ai_platform + pm2 start server.js --name ai_platform pm2 save pm2 startup # 부팅 시 자동 기동(출력되는 sudo 명령 실행) ``` @@ -228,7 +228,7 @@ PPT 썸네일·슬라이드 이미지는 **macOS**에서는 `qlmanage`가 우선 ### 배포 후 확인 -- 터미널 또는 `pm2 logs webplatform`에서 **에러 없이** `Server started` 로그 확인 +- 터미널 또는 `pm2 logs ai_platform`에서 **에러 없이** `Server started` 로그 확인 - 브라우저로 메인·`/learning`·관리자(토큰)까지 동작 확인 - PostgreSQL 사용 시 `npm run db:schema`는 **최초 1회**(또는 스키마 변경 시); 백업·마이그레이션 정책은 운영 환경에 맞게 별도 수립 @@ -260,13 +260,61 @@ npm start 정상 기동 시 터미널에 `Server started: http://localhost:8030` (또는 설정한 `PORT`)가 출력됩니다. **이 상태에서만** 브라우저로 접속할 수 있습니다. -운영/배포 환경에서는 예: +### PM2로 실행 + +프로젝트 루트에서 실행해야 `server.js`가 같은 디렉터리의 `.env`를 읽습니다( `dotenv` 기준). + +**1) PM2 설치 (전역, 한 번)** ```bash -# PM2 사용 시 -pm2 restart webplatform +npm install -g pm2 ``` +**2) 프로젝트 디렉터리로 이동 후 의존성** + +```bash +cd /Users/dsyoon/workspace/ai_platform +npm install +cp .env.example .env # 최초 1회 — 값 편집 +``` + +**3) 앱 기동** + +```bash +pm2 start server.js --name ai_platform +``` + +`npm start`와 동일하게 `server.js`를 띄웁니다. 이름만 PM2에서 `ai_platform`으로 관리합니다. + +**4) 재부팅 후에도 유지 (선택)** + +```bash +pm2 save +pm2 startup +``` + +`pm2 startup`이 출력하는 `sudo env PATH=...` 한 줄을 그대로 실행한 뒤, 다시 `pm2 save`를 하면 부팅 시 자동 기동에 맞춰집니다. + +**5) 자주 쓰는 명령** + +| 목적 | 명령 | +|------|------| +| 상태 확인 | `pm2 list` | +| 로그(실시간) | `pm2 logs ai_platform` | +| 재시작 | `pm2 restart ai_platform` | +| 중지 | `pm2 stop ai_platform` | +| 목록에서 제거 | `pm2 delete ai_platform` | + +**환경 변수**: 포트·DB 등은 프로젝트 루트의 `.env`에 두고, 변경 후 `pm2 restart ai_platform`으로 반영합니다. 별도 경로에 두었다면 해당 디렉터리에서 `pm2 start` 하거나, `ecosystem` 설정으로 `cwd`를 지정하세요. + +운영/배포 환경에서 이미 PM2로 띄운 경우 재시작 예: + +```bash +pm2 restart ai_platform +``` + +로컬에서 포그라운드로만 확인할 때: + ```bash node server.js ``` @@ -315,9 +363,9 @@ pkill -f "node server.js" ```bash pm2 list -pm2 stop webplatform +pm2 stop ai_platform # 완전히 제거하려면 -pm2 delete webplatform +pm2 delete ai_platform ``` Windows에서는 작업 관리자에서 `Node.js` 프로세스를 종료하거나, PowerShell에서 `Get-NetTCPConnection -LocalPort 8030` 등으로 점유 프로세스를 확인한 뒤 해당 PID를 종료합니다.