NestJS 운영 가이드 (PostgreSQL 17 · MariaDB 11.4)
💡 요약 정리
- Node.js 24 + NestJS 11 + TypeORM + TypeScript + pnpm 10 + PM2 6 (cluster x2) 환경의 운영 매뉴얼입니다.
- DB는 PostgreSQL 17 또는 MariaDB 11.4를 사용합니다.
- 앱은
127.0.0.1:3000에서 listen하며, nginx가 리버스 프록시로 외부 요청을 전달합니다. - systemd 서비스는 pm2-appuser.service 하나로 다중 앱을 관리합니다.
- 배포 시
ecosystem.config.js와 환경변수 파일은 절대 업로드 금지입니다.
Node.js 24 + NestJS 11 + TypeORM + TypeScript + pnpm 10 + PM2 6 (cluster x2) 환경에서 PostgreSQL 17 또는 MariaDB 11.4를 사용하는 운영 매뉴얼.
1. 환경 매니페스트
| 항목 | 값 |
|---|---|
| OS | Ubuntu 24.04 LTS |
| 언어 / 런타임 | Node.js 24, TypeScript 5.x |
| 프레임워크 | NestJS 11 + TypeORM |
| 패키지 매니저 | pnpm 10 |
| 프로세스 매니저 | PM2 6 (cluster x2) |
| 앱 listen | 127.0.0.1:3000 |
| 리버스 프록시 | nginx 1.24 (:80/:443, Let's Encrypt 자동) |
| 앱 디렉토리 | /opt/[프로젝트] |
| 환경변수 | /etc/[프로젝트]/env |
| 로그 | /var/log/[프로젝트] (PM2 logs) |
| systemd 서비스 | pm2-appuser.service (공용 PM2 데몬) |
| ecosystem 파일 | /opt/[프로젝트]/ecosystem.config.js |
| 빌드 산출물 | /opt/[프로젝트]/dist/main.js |
DB 매니페스트
| 항목 | PostgreSQL 17 | MariaDB 11.4 |
|---|---|---|
| 인증 | peer auth (sudo psql) | unix_socket auth (sudo mariadb) |
| 포트 | 5432 | 3306 |
| 서비스명 | postgresql@17-main | mariadb |
| TypeORM type | 'postgres' | 'mysql' (또는 'mariadb') |
| 드라이버 | pg | mysql2 |
PM2 그룹 (Node.js — Express · NestJS · Next.js) 공통: systemd는 pm2-appuser.service 데몬 하나, 그 위에 ecosystem.config.js로 다중 앱 관리.
2. 서버 접속
2-1. SSH (root)
ssh root@[아이디].mycafe24.com
PROJECT_NAME=myapp; export PROJECT_NAME
2-2. SFTP / rsync
rsync -avz --exclude='node_modules/' --exclude='dist/' --exclude='.next/' \
./ root@[아이디].mycafe24.com:/opt/$PROJECT_NAME/
ssh root@... "chown -R appuser:appuser /opt/$PROJECT_NAME"
2-3. appuser로 작업 (디버깅)
sudo -u appuser bash
cd /opt/$PROJECT_NAME
pm2 status
pm2 logs $PROJECT_NAME --lines 50
3. 환경 확인
ls -la /opt/$PROJECT_NAME
sudo cat /etc/$PROJECT_NAME/env
# PM2 데몬 상태 (systemd)
sudo systemctl is-active pm2-appuser
# PM2 앱 목록
sudo -u appuser pm2 status
sudo -u appuser pm2 logs $PROJECT_NAME --lines 50
# 포트 listen (127.0.0.1만 정상)
ss -tlnp | grep 3000
# 헬스 체크
curl -sf http://127.0.0.1:3000/
4. DB 직접 접속
4-1. PostgreSQL 17
sudo -u postgres psql
\l
\du
\c [DB명]
\dt
\q
4-1'. MariaDB 11.4
sudo mariadb
SHOW DATABASES;
USE [DB명];
SHOW TABLES;
EXIT;