[Ubuntu] Node.js 설치와 백엔드 가동하기

[Ubuntu] Node.js 설치와 백엔드 가동하기

전통적인 웹 프로그래밍 플랫폼은 ASP, PHP, JSP를 많이 사용했지만 최근에는 ASP.NET, Codeigniter(PHP), Laravel(PHP), Spring(Java)등의 Framework가 대세가 되었습니다. 이 흐름에 Javascript도 Node.js를 통해 뛰어들었습니다.

Node.js를 기반으로 구현되는 백엔드 시스템은 Express라는 Framework를 주로 사용합니다. 이 글에서는 Express를 기반으로 구현된 백엔드 시스템을 Ubuntu에서 구동하기 위한 절차를 소개합니다.

#01. NVM 설치하기

1. NVM이란?

NVM(Node Version Manager)은 Node.js의 버전을 관리하는 도구

협업을 할 때, 또는 다양한 프로젝트를 동시에 진행해야 할 때 다양한 라이브러리/프레임워크/개발툴의 버전 호환 문제를 겪게 되는데 NVM은 이러한 문재를 해결해 준다.

  • 컴퓨터에 다양한 버전의 Node.js 를 설치할 수 있게 함
  • use 커맨드를 이용해 사용할 Node 버전으로 간단하게 스위칭할수 있음
  • 버전 관리가 손쉬움
    • 기본 버전 설정
    • 설치한 버전의 전체 리스트 확인
    • 불필한 버전 삭제

2. 리눅스에 NVM 설치하기

1) NVM 설치 명령 확인

NVM 공식사이트를 통해 설치 명령어를 확인한다.

https://github.com/nvm-sh/nvm#installing-and-updating

버전이 변경될시 설치 스크립트의 파일명이 변경될 수 있으므로 가급적 고정된 명령어를 사용하지 말고 공식 사이트를 통해 제시되는 명령어를 확인하는 것이 좋다.

2) NVM 설치하기

리눅스에 일반 사용자 권한으로 로그인 한 상태로 설치 스크립트를 수행한다. (쉘 스크립트를 wget명령으로 내려받아 실행하는 형태)

root권한이 아님

3) 설치 결과 확인

설치 완료를 확인하기 위해 버전을 확인한다.

$ nvm --version

3. NVM을 사용한 Node 버전 관리

1) 최신 버전 설치하기

$ nvm install

2) 특정 버전 설치하기

구문 형식

$ nvm install 버전

사용 예시

$ nvm install 12.22.9

3) 설치되어 있는 Node 목록 확인하기

버전이 여러개 나오고 특정 버전 앞에 * 표시가 있다면 현재 * 표시 버전이 사용중인 상태임

$ nvm ls

4) 특정 버전으로 변경하기

구문 형식

$ nvm use 버전

사용 예시

$ nvm use 12.22.7

5) 설치한 특정 노드버전 삭제

구문 형식

$ nvm uninstall 버전

사용 예시

$ nvm uninstall 12.22.6

5) node 설치 경로 확인

$ which node

#02. Node.js 설치하기

1. Node.js 설치

NVM을 사용하여 Node를 설치한다. 기본적으로 가장 최신 버전을 설치하게 된다.

$ nvm install node

2. 설치 결과 확인

node와 npm의 버전을 각각 확인한다.

$ node --version
$ npm --version

3. Yarn 설치하기

Yarn은 Node.js 자바스크립트 런타임 환경을 위해 페이스북이 2016년 개발한 소프트웨어 패키지 시스템

npm 패키지 관리자의 대안으로서 대형 코드의 일관성, 보안, 성능 문제를 해결하고자 개발됨

$ npm install -g yarn

#03. Express 기반 백엔드 가동하기

1) 환경변수 추가하기

백엔드 프로세스에 상용 시스템임을 알리기 위해 쉘 초기화 파일에 환경변수를 추가해야 한다.

vi에디터로 zsh쉘의 초기화 파일을 연다.

$ vi ~/.zshrc

초기화 파일에 NODE_ENV 환경변수를 “production”으로 지정한다.

export NODE_ENV="production"

2) 소스코드 업로드

FTP등의 프로그램을 사용하여 완성된 Express 백엔드 프로젝트를 Linux의 적절한 위치에 업로드한다.

이 때 node_modules 디렉토리는 업로드하지 않는다.

package.json은 반드시 포함되어야 한다.

여기서는 ~/myweb 경로에 업로드 하였다.

git등을 통해 저장소에서 clone받아도 같은 결과를 얻을 수 있다.

3) 패키지 설치하기

프로젝트 폴더 안에서 package.json에 명시된 패키지를 일괄 설치한다.

$ yarn install

4) 포트 개방하기

백엔드에서 사용중인 포트번호에 대한 접근을 허용한다.

구문형식

$ sudo ufw allow 포트번호/tcp

사용 예시

$ sudo ufw allow 3001/tcp

여기서는 3001번 포트를 사용하지만 실제 상용 서비스를 운영하기 위해서는 http 프로토콜의 기본 포트인 80번 포트를 사용해야 한다.

3) 방화벽 새로고침

$ sudo ufw reload

4) 방화벽 상태 확인

$ sudo ufw status

5) 백엔드 시작하기

시작 파일이 위치한 디렉토리에서 프로그램을 가동한다.

$ node app.js

6) 백엔드 접속 테스트

Insomnia 등의 클라이언트 프로그램으로 정상 동작을 확인한다.

7) 로그 확인

터미널을 통해 출력되는 로그를 확인한다.

종료를 위해서는 Ctrl+C를 누른다. 이 상태에서는 리눅스에서 로그아웃하면 백엔드도 종료된다.

#04. PM2

PM2는 Node.js 어플리케이션을 쉽게 관리할 수 있게 해주는 Process Manager

Node.js 어플리케이션을 cluster mode 로 실행시킨다거나, 메모리가 넘친다거나, 오류로 인해 프로세스가 종료되는 등의 상황에 직면했을 때 간단한 설정만로도 이러한 처리를 손쉽게 해결할 수 있다.

1. PM2 설치하기

$ npm install -g pm2

2. PM2를 사용한 Express 프로그램 가동하기

$ pm2 start 시작스크립트이름

2. PM2를 통해 관리되는 Express 프로그램 목록 보기

$ pm2 list

2. PM2를 통해 관리되는 Express 프로그램중 특정 항목 중지

$ pm2 stop id번호

2. PM2를 통해 관리되는 Express 프로그램중 특정 항목 시작

한번 가동했던 프로그램은 PM2에 등록되기 때문에 현재 작업중인 디렉토리 위치에 상관 없이 id번호를 통해 시작/중지가 가능하다.

$ pm2 start id번호

호쌤(이광호)'s Picture

About 호쌤(이광호)

메가스터디IT아카데미에서 Java, Spring, Python, Frontend 등을 강의하는 IT 전문 강사이자 프리렌서 개발자 입니다.
https://www.youtube.com/@hossam-codingclub

Seoul, Korea http://www.hossam.kr