서버
서버 배포 예제
상상모음
2025. 6. 20. 13:15
https://내프로젝트명.com 이런 식으로 인터넷 상에 내 도메인으로 서비스하는 방법은
크게 아래 3가지가 대표적이에요.
✅ 1️⃣ AWS 같은 클라우드 서버에 배포하기 (가장 보편적)
- 예: AWS EC2, Google Cloud Compute Engine, Azure VM 등
- 서버 OS는 보통 Linux (Ubuntu, CentOS)
- 여기서 Docker를 사용하면 앱 실행 환경을 컨테이너로 관리할 수 있어 배포/확장/복구가 편리함
- Nginx나 Apache로 HTTPS (SSL) 설정 + 도메인 연결
👉 가장 표준적이고 기업/개인 모두 많이 쓰는 방법
✅ 2️⃣ 자체 Linux 서버로 직접 운영하기
- 예: 직접 사무실이나 집에 리눅스 서버를 한 대 둠
- 거기에 Docker로 앱 실행 → Nginx로 HTTPS 처리 → 도메인 연결
- 혹은 가상 서버(VPS: 카페24, Vultr, Hetzner 등)도 가능
- 관리와 유지보수, 보안 패치 등을 직접 다 해야 함
👉 클라우드 요금이 부담된다면 작은 VPS나 직접 서버로 운영 가능 (관리 난이도 ↑)
✅ 3️⃣ 라즈베리파이로 홈서버로 운영하기
- 라즈베리파이는 작은 Linux 컴퓨터
- 개인 프로젝트용, 소규모 테스트 서버로 적합
- 라즈베리파이에 Docker 설치해서 앱 컨테이너로 돌리고,
공유기에 포트포워딩 설정 + DDNS(혹은 정적 IP) + HTTPS(SSL 인증서 발급) 해서 연결 - 단, 가정용 인터넷은 IP가 바뀌거나 방화벽 제약이 있어 상용 서비스로는 비추천
👉 전기요금 ↓, 초기 비용 ↓, 소규모 취미 프로젝트에는 최고! (하지만 신뢰성은 클라우드보다 떨어짐)
✅ 📌 핵심 포인트: 도메인 연결
어느 방법이든 공통 필수 단계
- 도메인 구매 (내프로젝트명.com → GoDaddy, Namecheap, Cafe24 등)
- DNS 설정 → 내 서버 IP로 A 레코드 연결
- 서버에 HTTPS 설정 → Nginx + Let's Encrypt SSL 무료 인증서
✅ 정리
방법 추천 대상 특징
| AWS/클라우드 | 실서비스/포트폴리오 | 유지보수 편리, 확장성 좋음, 비용 유동적 |
| 직접 Linux 서버 | 서버 경험 쌓기 | 비용 ↓, 관리 난이도 ↑ |
| 라즈베리파이 | 개인 공부용 | 재미있고 저렴, 상용엔 비추천 |
🚀 결론
👉 Docker는 선택사항이 아니라 배포/운영을 편하게 해주는 도구
👉 클라우드든 직접 서버든 라즈베리파이든 Docker + Nginx + HTTPS + 도메인 연결은 공통적으로 사용 가능
👉 처음이라면 작은 VPS or AWS 무료티어로 연습 추천!
✅ 먼저: Nginx란?
👉 Nginx(엔진엑스)는 대표적인 웹 서버 & 리버스 프록시 서버예요.
- 웹 서버 역할:
정적 파일(html, css, js) 서빙 - 리버스 프록시 역할:
localhost:3000 같은 앱 서버를 외부에 https://내도메인.com으로 연결해줌 - **HTTPS (SSL 인증서)**도 Nginx에서 처리함 (Let's Encrypt로 무료 발급 가능)
결국 Nginx는:
👉 클라이언트 → Nginx → 내부 앱 서버(Docker)
👉 HTTPS도 자동으로 적용!
✅ 1️⃣ AWS 배포 예제
📦 기본 시나리오
👉 React 앱 혹은 Node.js 앱을 배포한다고 가정
🚀 (1) EC2 인스턴스 생성
- AWS EC2 대시보드에서
- Ubuntu 22.04 LTS 선택
- t2.micro (무료티어) 선택
- SSH 키페어 다운로드
- 보안 그룹에서 HTTP(80), HTTPS(443), SSH(22) 열어둠
🚀 (2) SSH로 접속
ssh -i "내키페어.pem" ubuntu@<EC2_PUBLIC_IP>
🚀 (3) 필요한 패키지 설치
# 패키지 업데이트
sudo apt update && sudo apt upgrade -y
# Docker 설치
sudo apt install docker.io -y
sudo systemctl enable docker
sudo systemctl start docker
# Docker Compose 설치 (optional)
sudo apt install docker-compose -y
# Nginx 설치
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
🚀 (4) Docker로 앱 실행
예: Node.js 앱
# Dockerfile, docker-compose.yml 준비해둠
docker build -t myapp .
docker run -d -p 3000:3000 myapp
🚀 (5) Nginx 설정
sudo nano /etc/nginx/sites-available/default
예제:
server {
listen 80;
server_name 내도메인.com www.내도메인.com;
location / {
proxy_pass http://localhost:3000; # Node.js 서버 포트
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
적용:
sudo nginx -t # 문법 확인
sudo systemctl restart nginx
🚀 (6) HTTPS (Let's Encrypt 무료 SSL)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d 내도메인.com -d www.내도메인.com
# 자동 갱신 테스트
sudo certbot renew --dry-run
✅ 2️⃣ 리눅스 서버 + Docker + Nginx + HTTPS 설정 예제
위의 AWS 예제와 거의 동일합니다!
차이점은 서버 제공자가 AWS가 아니라:
- 직접 구한 VPS
- 집에 둔 리눅스 머신
- 라즈베리파이 등
일 뿐이고, 배포 구조는 똑같음:
[인터넷 요청] → [Nginx (80/443)] → [Docker 앱 (3000 등)]
💡 핵심:
- Docker로 앱 실행
- Nginx로 포워딩
- Certbot으로 HTTPS 무료 발급
✅ 📌 둘 다 핵심 요약
구성 요소 역할
| Docker | 앱 실행 환경 통일 (언제나 같은 OS, 같은 포트, 의존성 깔끔) |
| Nginx | 클라이언트 요청 받아서 → Docker로 전달, HTTPS 처리 |
| Certbot (Let's Encrypt) | HTTPS 인증서 무료 발급 |