본문 바로가기

백엔드

[Node.js] 5. 외부에서의 서버 접속 허용하기.

개요

이전 문서까지는 오직 localhost만 서버에 접속할 수 있었다. 이번 문서에서는 외부 클라이언트도 서버에 접속하는 것을 허용하게 세팅하는 법을 다룬다. 이번 문서에서는 linux에 대한 기초적인 이해가 필요하다. 추가로 클라우드 서버는 Ubuntu 16.04를 기준으로 한다.

 

과정

  1. 클라우드 플랫폼 - 네이버 클라우드 플랫폼(NCF)
  2. pm2 패키지 설치
  3. 서버 구동

 

1. 클라우드 플랫폼

AWS. Toast, 구글 클라우드 플랫폼 등 다양한 클라우드 플랫폼이 존재한다. 이번 문서에서는 네이버 토스트 클라우드를 사용하려 한다. 현재 가입시 10만 크레딧을 주고, Micro 서버라는 성능이 뛰어나진 않지만 소규모로 쓸만한 서버도 1년간 무료로 제공한다. 

 

서버 생성법은 https://console.ncloud.com/에 자세히 나와있으니 생략하고, 기본적인 필수 세팅만 언급한다.

 

먼저 ACG를 세팅한다. NCF에서는 ACG로 서버의 방화벽을 관리한다. 외부에서 서버의 접속을 허용하기 위해

위와 같은 내용을 추가해준다. TCP프로토콜을 이용하면 어디서든(0.0.0.0/0) 3000번 포트로의 접근을 허용한다는 얘기이다.

 

2. pm2 패키지 설치

pm2 패키지는 원할한 서버 배포를 위한 패키지이다. 가장 주용한 기능은 서버가 에러로 죽게되면 다시 서버를 실행시켜주고, 노드 서버를 백그라운드로 실행하여 콘솔 입력도 가능하다. 

 

먼저 우리가 계속 코딩하던 윈도우의 프로젝트 폴더에서 pm2를 설치한다.

$ npm install pm2

 

그리고 package.json을 다음과 같이 수정한다.

{
  ...
  "scripts": {
    "start": "pm2 start server.js", //수정된 부분
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  ...
}

 위는 터미널에서 npm start를 사용할시 pm2 start server.js를 수행한다는 의미이다. 터미널에서 npm start를 입력하면 다음과 같은 화면이 나오면 정상적으로 수행된 것이다.

앞서 말한듯 이 서버는 백그라운드로 동작하여 콘솔 입력이 가능하다. 또한 추가적인 명령어로 npx pm2 list, npx pm2 kill 등이 존재한다. 이는 실행중인 서버 리스트를 보여주거나, 실행중인 서버를 멈추는 기능을 한다. 이외에도 클러스터링과 같은 정말 많은 기능이 존재하지만 생략한다. 

 

3. 서버 구동

putty를 통해 생성한 서버에 접속하여 다음과 같은 명령어를 수행한다. 

$ sudo apt-get update
$ sudo apt-get install -y build-essential
$ sudo apt-get install curl
$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash --
$ sudo apt-get install -y node.js
$ sudo apt-get install -y mysql-server

 

정상적인 설치를 확인하기 위해 다음 명령어를 수행한다. 정상적이라면 아래 처럼 버젼이 나온다.

$ node -v
14.0.0

$ npm -v
7.6.0

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.31, for Linux (x86_64) using  EditLine wrapper

 

그 이후 git clone을 통해 github에 올여놓은 프로젝트를 클론하고 .gitignore에 등록된 파일들 다시 생성하고 mysql에도 테이블을 적절히 생성한다. 그 이후 npm start 명령어를 입력하면 잘 수행될 것이다.