25강. Node.js 프로젝트 배포하기
이번 강의에서는 React + Node.js + MySQL 프로젝트를 실제 서버에 배포하는 흐름을 정리합니다.
1. 배포란?
내 컴퓨터에서만 실행되던 프로젝트를 인터넷에서 접속 가능하게 만드는 과정입니다.
내 컴퓨터
↓
서버
↓
도메인
↓
사용자 접속
2. 배포 전체 구조
사용자
↓
도메인
↓
Nginx
↓
React 정적 파일
↓
Node.js API
↓
MySQL
3. 서버에서 필요한 것
Node.js
npm
MySQL
PM2
Nginx
Git
SSL 인증서
4. 환경 변수 관리
.env
PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=1234
DB_NAME=node_db
JWT_SECRET=mySecretKey
Node.js
require("dotenv").config();
const PORT = process.env.PORT;
5. dotenv 설치
npm install dotenv
6. 운영용 실행
node server.js
하지만 서버가 꺼지면 서비스도 종료됩니다.
그래서 실무에서는 PM2를 사용합니다.
7. PM2 설치
npm install -g pm2
8. PM2로 서버 실행
pm2 start server.js
확인
pm2 list
중지
pm2 stop server
재시작
pm2 restart server
9. 서버 자동 실행
서버 재부팅 후 자동 실행되게 설정합니다.
pm2 startup
저장
pm2 save
10. React 빌드
React 프로젝트에서 실행합니다.
npm run build
생성 결과
frontend
│
└── dist
또는 Create React App은
build
폴더가 생성됩니다.
11. React 정적 파일 배포
빌드된 파일을 서버에 업로드합니다.
/var/www/html
또는 Nginx 설정 경로에 배치합니다.
12. Nginx 역할
Nginx는 사용자의 요청을 받아서 알맞은 곳으로 보내는 역할을 합니다.
도메인
↓
Nginx
├── React 화면
└── Node.js API
13. API 프록시 구조
https://example.com
↓
React
https://example.com/api
↓
Node.js
14. Nginx 설정 예시
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html;
location / {
try_files $uri /index.html;
}
location /api {
proxy_pass http://localhost:3000;
}
}
15. HTTPS 적용
보통 Let’s Encrypt 인증서를 사용합니다.
sudo certbot --nginx
적용 후
http://example.com
↓
https://example.com
16. MySQL 배포 체크
확인할 것
DB 생성
테이블 생성
계정 권한
문자셋 utf8mb4
백업 설정
예시
CREATE DATABASE node_db DEFAULT CHARACTER SET utf8mb4;
17. 보안 체크
.env 외부 노출 금지
DB 비밀번호 강하게 설정
관리자 페이지 접근 제한
JWT_SECRET 복잡하게 설정
HTTPS 적용
업로드 파일 확장자 제한
18. 배포 후 점검
항목 확인
React 화면 정상 접속
API 정상 응답
DB 조회/등록 가능
이미지 업로드/출력 가능
로그인 JWT 정상 작동
HTTPS 보안 연결
PM2 서버 유지
모바일 반응형 확인
19. 실무 배포 흐름
GitHub 업로드
↓
서버 접속
↓
git clone
↓
npm install
↓
.env 설정
↓
MySQL 세팅
↓
React build
↓
PM2 실행
↓
Nginx 연결
↓
HTTPS 적용
↓
최종 테스트
20. 이번 강의 핵심 정리
도구 역할
.env 환경 변수 관리
PM2 Node 서버 유지
Nginx 웹 서버 / 프록시
MySQL 데이터 저장
Certbot HTTPS 인증서
GitHub 소스 관리
이번 강의에서는 React + Node.js + MySQL 프로젝트를 실제 서버에 배포하는 흐름을 정리합니다.
1. 배포란?
내 컴퓨터에서만 실행되던 프로젝트를 인터넷에서 접속 가능하게 만드는 과정입니다.
내 컴퓨터
↓
서버
↓
도메인
↓
사용자 접속
2. 배포 전체 구조
사용자
↓
도메인
↓
Nginx
↓
React 정적 파일
↓
Node.js API
↓
MySQL
3. 서버에서 필요한 것
Node.js
npm
MySQL
PM2
Nginx
Git
SSL 인증서
4. 환경 변수 관리
.env
PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=1234
DB_NAME=node_db
JWT_SECRET=mySecretKey
Node.js
require("dotenv").config();
const PORT = process.env.PORT;
5. dotenv 설치
npm install dotenv
6. 운영용 실행
node server.js
하지만 서버가 꺼지면 서비스도 종료됩니다.
그래서 실무에서는 PM2를 사용합니다.
7. PM2 설치
npm install -g pm2
8. PM2로 서버 실행
pm2 start server.js
확인
pm2 list
중지
pm2 stop server
재시작
pm2 restart server
9. 서버 자동 실행
서버 재부팅 후 자동 실행되게 설정합니다.
pm2 startup
저장
pm2 save
10. React 빌드
React 프로젝트에서 실행합니다.
npm run build
생성 결과
frontend
│
└── dist
또는 Create React App은
build
폴더가 생성됩니다.
11. React 정적 파일 배포
빌드된 파일을 서버에 업로드합니다.
/var/www/html
또는 Nginx 설정 경로에 배치합니다.
12. Nginx 역할
Nginx는 사용자의 요청을 받아서 알맞은 곳으로 보내는 역할을 합니다.
도메인
↓
Nginx
├── React 화면
└── Node.js API
13. API 프록시 구조
https://example.com
↓
React
https://example.com/api
↓
Node.js
14. Nginx 설정 예시
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html;
location / {
try_files $uri /index.html;
}
location /api {
proxy_pass http://localhost:3000;
}
}
15. HTTPS 적용
보통 Let’s Encrypt 인증서를 사용합니다.
sudo certbot --nginx
적용 후
http://example.com
↓
https://example.com
16. MySQL 배포 체크
확인할 것
DB 생성
테이블 생성
계정 권한
문자셋 utf8mb4
백업 설정
예시
CREATE DATABASE node_db DEFAULT CHARACTER SET utf8mb4;
17. 보안 체크
.env 외부 노출 금지
DB 비밀번호 강하게 설정
관리자 페이지 접근 제한
JWT_SECRET 복잡하게 설정
HTTPS 적용
업로드 파일 확장자 제한
18. 배포 후 점검
항목 확인
React 화면 정상 접속
API 정상 응답
DB 조회/등록 가능
이미지 업로드/출력 가능
로그인 JWT 정상 작동
HTTPS 보안 연결
PM2 서버 유지
모바일 반응형 확인
19. 실무 배포 흐름
GitHub 업로드
↓
서버 접속
↓
git clone
↓
npm install
↓
.env 설정
↓
MySQL 세팅
↓
React build
↓
PM2 실행
↓
Nginx 연결
↓
HTTPS 적용
↓
최종 테스트
20. 이번 강의 핵심 정리
도구 역할
.env 환경 변수 관리
PM2 Node 서버 유지
Nginx 웹 서버 / 프록시
MySQL 데이터 저장
Certbot HTTPS 인증서
GitHub 소스 관리
#25강. Node.js 프로젝트 배포하기