✅ 전체 아키텍처
Internet │ ▼ Nginx (Reverse Proxy) ├── https://yourdomain.com → Svelte (Vite build된 정적 파일) └── https://yourdomain.com/api → Fastify API 서버
✅ 1. Ubuntu 서버 준비
sudo apt update && sudo apt upgrade -y sudo apt install git curl ufw nginx -y
- 방화벽 설정
sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full' sudo ufw enable
✅ 2. Node.js 설치 (공통 환경)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs node -v npm -v
✅ 3. Fastify 서버 배포
1) 서버 코드 clone 또는 복사
git clone https://github.com/yourrepo/backend.git cd backend
2) 의존성 설치 및 빌드
npm install npm run build # TypeScript 사용하는 경우
3) PM2로 프로세스 관리
npm install -g pm2 pm2 start dist/index.js --name fastify-api pm2 save pm2 startup
✅ 4. Svelte 프론트엔드 배포
1) 프론트 프로젝트 빌드
cd frontend npm install npm run build
2) Nginx 정적 파일 서빙
sudo cp -r dist /var/www/myapp sudo chown -R www-data:www-data /var/www/myapp
✅ 5. Nginx 설정
sudo nano /etc/nginx/sites-available/myapp
server { listen 80; server_name yourdomain.com; root /var/www/myapp; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://localhost:3000/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
✅ 6. HTTPS 적용 (Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d yourdomain.com
✅ 배포 후 체크리스트
항목점검 내용
| ✅ API 주소가 /api/로 잘 분기되는가 | Fastify 서버가 정상 응답 |
| ✅ 모바일/PC에서 정상 작동하는가 | 반응형 CSS 적용 확인 |
| ✅ 자동 재시작 설정되었는가 | pm2 save && pm2 startup |
| ✅ HTTPS 적용되었는가 | https://yourdomain.com 정상 작동 |
| ✅ 보안 업데이트 주기적 적용 | unattended-upgrades 설정 가능 |
✅ 요약
항목구성
| 서버 운영체제 | Ubuntu (개인 PC) |
| 배포 대상 | Fastify (API), Svelte 빌드 결과 |
| 배포 방식 | Nginx + PM2 + Let's Encrypt |
| 향후 확장 | HTTPS, 로그 관리, Docker, CI/CD (GitHub Actions) 등 |
'개발 잡지식' 카테고리의 다른 글
| Syntax sugar - 문법 설탕이란? (0) | 2026.03.10 |
|---|---|
| l10n? 무슨 약어일까? (0) | 2026.03.10 |
| 서로 다른 프로세스 간 통신을 하는 기술 IPC란? (0) | 2026.03.06 |
| AI + MerMaid를 통해서 손쉽게 다이어그램 그리기 (2) | 2025.07.10 |