sudo yum update -y || sudo apt update -y
sudo yum install -y git || sudo apt install -y git
sudo yum install -y curl || sudo apt install -y curl
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
적용:
source ~/.nvm/nvm.sh
확인:
nvm -v
LTS 기준:
nvm install --lts
nvm use --lts
nvm alias default node
확인:
node -v
npm -v
npm install -g pnpm
pnpm setup
source ~/.bashrc
또는
exec bash
echo $PNPM_HOME
echo $PATH
👉 PNPM_HOME이 포함되어 있어야 정상
예:
/home/ec2-user/.local/share/pnpm
pnpm add -g pm2
확인:
pm2 -v
git clone <REPO_URL>
cd 프로젝트폴더
vi ~/.ssh/id_ed25519
👉 로컬 private key 내용 그대로 붙여넣기
vi ~/.ssh/id_ed25519.pub
👉 로컬 public key 내용 그대로 붙여넣기
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
ssh -T git@github.com
위치
apps/api/.env
생성
cd apps/api
vi .env
필수 값 작성
DATABASE_URL=postgresql://user:password@localhost:5432/db
TRONGRID_API_KEY=...
TRON_FULL_HOST=https://api.trongrid.io
WALLET_MASTER_KEY_BASE64=...
cd ~/프로젝트루트
pnpm install
이 스크립트 자동 실행됨:
"postinstall": "pnpm --filter @cws/api prisma:generate"
👉 Prisma client 자동 생성됨
pnpm --filter @cws/api prisma:migrate
pnpm --filter @cws/api prisma:seed
pnpm build:api
👉 내부적으로:
pnpm --filter @cws/api build
pnpm start:api
→ start:dev라서 운영용 아님
pnpm --filter @cws/api start:prod
vi start.sh
#!/bin/bash
set -e
echo "📌 Project 배포 시작"
source ~/.nvm/nvm.sh
nvm use default
# 1. 최신 코드 가져오기
echo "📥 Git pull..."
git pull origin main
# 2. 의존성 설치
echo "📦 Dependencies 설치 중..."
pnpm install --frozen-lockfile
# 3. Prisma generate
echo "🧬 Prisma generate..."
pnpm --filter @cws/api prisma:generate
# 4. Build
echo "🏗 Build 중..."
pnpm build:api
# 5. PM2 재시작
echo "🚀 API 재시작..."
pm2 restart wallet-api || pm2 start apps/api/dist/main.js --name wallet-api --max-memory-restart 500M
pm2 save
echo "🎉 배포 완료"
pm2 logs
chmod +x start.sh
./start.sh
pm2 startup
👉 출력 명령어 실행
pm2 save
pm2 list
pm2 logs