본문 바로가기

러닝커뮤니티/웹프로그래밍

nodejs를 ec2에 설치 및 PM2로 관리

1. EC2에 Node.js 설치

(1) 왜 Node.js 설치가 필요한가?

프로젝트를 서버에서 실행하기 위해 서버 환경에도 Node.js가 설치되어 있어야 함.

(2) NVM(Node Version Manager) 설치

AWS 공식 문서에서도 NVM 사용을 권장함.

설치 명령어

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash

(이미지 참고: 페이지 4~5)

NVM 실행

. ~/.nvm/nvm.sh

(3) Node.js 설치

nvm install 10.16.0

(4) 설치 확인

node -e "console.log('Running Node.js ' + process.version)"

2. 앱 업로드 및 실행

(1) 앱 실행 과정

npm install
npm run start

(페이지 10 이미지에서는 npm install 후 npm run start 실행)

(2) EC2 보안 그룹 설정

  • 인바운드 규칙에서 TCP 3000 포트 허용 필요 (페이지 11 참고)

(3) 브라우저 접속

http://EC2_공인IP:3000

3. 도서 관리 프로그램 만들기

도서를 JS 배열로 관리하며 다음 기능 제공:

  • 조회(Read)
  • 등록(Create)
  • 수정(Update)
  • 삭제(Delete)

(1) 기본 books.js 구조

var express = require('express');
var router = express.Router();

var books = [];
var id = 1;

router.get('/', (req, res) => {
  res.send(books);
});

module.exports = router;

(이미지: 페이지 14)


(2) 도서 등록 API (POST)

router.post('/', (req, res) => {
  var book = req.body;
  book.id = id;
  books.push(book);
  id += 1;
  res.sendStatus(200);
});

(3) 도서 수정 API (PUT)

router.put('/:id', (req, res) => {
  var index = books.findIndex(book => book.id == req.params.id);
  req.body.id = parseInt(req.params.id);
  books.splice(index, 1, req.body);
  res.sendStatus(200);
});

(4) 도서 삭제 API (DELETE)

router.delete('/:id', (req, res) => {
  var index = books.findIndex(book => book.id == req.params.id);
  books.splice(index, 1);
  res.sendStatus(200);
});

(5) Express 앱에서 Router 등록

var express = require('express');
var app = express();

var router = require('./router.js');
var booksRouter = require('./books.js');

app.use(express.json());     // JSON Body 파싱
app.use('/router', router);
app.use('/books', booksRouter);

app.listen(3000, () => {
  console.log('3000번 포트로 서버 실행');
});

(페이지 18 화면 참고)


4. 도서 관리 API 테스트 (Insomnia)

페이지 19~24의 이미지에서는 아래 항목을 테스트함:

  • POST /books — 도서 생성
  • GET /books — 전체 도서 목록 조회
  • PUT /books/:id — 도서 정보 수정
  • DELETE /books/:id — 도서 삭제
  • 수정·삭제 후 다시 GET하여 결과 확인

각 테스트 결과는 JSON 형태로 정상 반환됨.


5. Static 미들웨어 (정적 파일 서비스)

정적 HTML, CSS, JS 등을 제공하는 기능.

사용법

app.use(express.static('public'));

접근 예시

http://서버주소/파일명

6. 클라이언트 프로그램 작성

페이지 27~32는 도서 목록을 보여주는 간단한 웹 UI를 작성하는 과정이며,
정적 HTML & JS로 서버의 books API를 호출하는 구조.


7. EC2에 배포 & 실행

  1. 클라이언트 파일 포함 프로젝트 전체를 서버로 업로드
  2. Node.js로 실행
  3. 브라우저로 접속해 UI 확인 가능

8. npm start의 문제점

  • putty 종료 시 Node 서버도 종료됨
  • 여러 Node 앱 실행 시 각각 접속해 실행해야 하는 불편함
  • 해결책 → PM2로 백그라운드 실행

9. PM2 설치 & 사용

(1) 설치

npm install -g pm2

(2) 실행

pm2 start --name books index.js

(3) 주요 명령어

pm2 reload books
pm2 stop books
pm2 start books
pm2 delete books
pm2 list
pm2 logs books
pm2 monit

'러닝커뮤니티 > 웹프로그래밍' 카테고리의 다른 글

RESTful API  (0) 2025.12.07
npm과 express 모듈  (0) 2025.12.07
NodeJS 소개  (0) 2025.12.07
OpenAPI 소개  (0) 2025.12.07
Ajax 기술 소개 및 활용  (0) 2025.12.07