백엔드-노드

노드 실전

강사: 오백엔드 · 작성자: 이종춘 · 작성일: 2026-07-08 18:13:52 · 조회수: 14

25강. Node.js 프로젝트 배포하기
목록으로
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 소스 관리
#25강. Node.js 프로젝트 배포하기

첨부 파일

0개
첨부된 파일이 없습니다.

댓글 / 답글

0개
댓글을 작성하려면 로그인하세요.
아직 댓글이 없습니다.