본문 바로가기
설치 및 기술 자료/Linux

[Linux] Node.js 개발 환경 구축

by 주식회사 서버몬 2024. 1. 29.

 

안녕하세요. 주식회사 서버몬 입니다.

오늘은 Node.js의 개념을 알아보고  Rocky Linux 에서 개발 환경을 구축 해보도록 하겠습니다.

 

 

Node.js 란?

 

 

 Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다.
-Node.js는 공식 홈페이지-

 

런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻합니다.

이를 이해하기 위해 JavaScript 라는 언어를 먼저 알아야 합니다.

 

 

JavaScript 는 또 뭔가요?

 

 

 자바스크립트는 ‘웹페이지에 생동감을 불어넣기 위해’ 만들어진 프로그래밍 언어입니다.
자바스크립트로 작성한 프로그램을 스크립트(script) 라고 부릅니다. 

스크립트는 웹페이지의 HTML 안에 작성할 수 있는데, 웹페이지를 불러올 때 스크립트가 자동으로 실행됩니다.
스크립트는 특별한 준비나 컴파일 없이 보통의 문자 형태로 작성할 수 있고, 실행도 할 수 있습니다.

 

JavaScript는 그저 웹페이지를 움직이게 만들 때 사용하는 언어입니다. 

document.getElementById('helloWorld').innerHTML = '안녕월드';

 

위 코드 처럼 사용하고 HTML 을 조작하고 움직이게도 만들수 있습니다.

 

 

Node.js 는 왜? JavaScript 를 사용하나

 

 

일반적으로 크롬, 익스플로러와 같은 브라우저들이  자바스크립트를 해석하는 역할을 하게됩니다.

자바스크립트를 빠르게 구현하면 사이트의 구현속도고 빨라지니 안쓸수가 없었겠죠??

그러던중 구글에서 V8 이라는 자바스크립트 엔진을 제작하였는데 성능이 너무나도 뛰어나

이를 자랑하기 위해 Node.js 라고 이름짓고 출시하게 됩니다.

 

즉 Node.js 는Javascript 를 브라우저가 아닌 로컬PC(서버) 에서 실행시켜 줄수 있는 런타임입니다.

 

 

Node.js 의 특징

 

Nodejs 의 특징은 크게 5개로 볼 수 있습니다.

 

비동기 프로그래밍

 Node.js는 비동기 이벤트 기반 아키텍처를 사용하며, 이는 높은 성능과 확장성을 제공합니다. JavaScript는 비동기 프로그래밍을 지원하는데, 이를 통해 여러 작업을 동시에 처리하고 블로킹을 최소화할 수 있습니다.

 

단일 스레드 모델

 Node.js는 단일 스레드 이벤트 루프를 사용하며, 이를 통해 동시성을 지원합니다. 이로써 많은 클라이언트 요청을 효율적으로 처리할 수 있습니다.

 

동일한 언어 사용

 JavaScript는 웹 브라우저에서 실행되는 프론트엔드 코드에 주로 사용되는 언어입니다. 

Node.js를 사용하면 서버 측 코드도 JavaScript로 작성할 수 있어서 전체 프로젝트에서 통일된 언어를 사용할 수 있습니다.

 

풍부한 생태계

 Node.js는 npm (Node Package Manager)을 통해 수많은 모듈과 패키지를 제공합니다. 이는 개발자들이 다양한 기능과 도구를 쉽게 활용할 수 있게 합니다.

 

경량화

 Node.js 의 환경은 매우 가벼우며 코드 구조가 모듈화 되어있어. 병렬 작업과 대용량 데이터 처리하는데 높은 성능을 보장합니다.

 

 

Node.js 를 사용하는 대표적인 회사

 

 

 

Node.js 설치

 

사용가능한 Nodejs 버전은 12,14,16,18, 20  입니다.

본 가이드는 Nodejs 공식 설치 매뉴얼 을 참고 합니다.

 

#사용가능한 NodeJS 버전을 보여줍니다#
[root@lab ~]# dnf module list nodejs
Rocky Linux 8 - AppStream
Name                                             Stream                                           Profiles                                                                       Summary                                                    
nodejs                                           10 [d]                                           common [d], development, minimal, s2i                                          Javascript runtime                                         
nodejs                                           12                                               common [d], development, minimal, s2i                                          Javascript runtime                                         
nodejs                                           14                                               common [d], development, minimal, s2i                                          Javascript runtime                                         
nodejs                                           16                                               common [d], development, minimal, s2i                                          Javascript runtime                                         
nodejs                                           18                                               common [d], development, minimal, s2i                                          Javascript runtime                                         
nodejs                                           20                                               common [d], development, minimal, s2i                                          Javascript runtime 

#NodeJS 20 LTS 버전을 사용하도록 합니다#
[root@lab ~]# dnf module -y enable nodejs:20
============================================================================================================================================================================================================================================
 꾸러미                                                   구조                                                    버전                                                       저장소                                                    크기
============================================================================================================================================================================================================================================
모듈 스트림 활성화:
 nodejs                                                                                                           20                                                                                                                       

연결 요약
============================================================================================================================================================================================================================================

완료되었습니다!

#[e] 표시로 현재 활성된 버전을 확인합니다#
[root@lab ~]# dnf module list nodejs
Rocky Linux 8 - AppStream
Name                                             Stream                                           Profiles                                                                       Summary                                                    
nodejs                                           10 [d]                                           common [d], development, minimal, s2i                                          Javascript runtime                                         
nodejs                                           12                                               common [d], development, minimal, s2i                                          Javascript runtime                                         
nodejs                                           14                                               common [d], development, minimal, s2i                                          Javascript runtime                                         
nodejs                                           16                                               common [d], development, minimal, s2i                                          Javascript runtime                                         
nodejs                                           18                                               common [d], development, minimal, s2i                                          Javascript runtime                                         
nodejs                                           20 [e]                                           common [d], development, minimal, s2i                                          Javascript runtime  


#Node.js 를 설치합니다.#
[root@lab ~]# dnf -y install nodejs 

#설치된 Node.js의 버전을 확인합니다#
[root@lab ~]# node  -v
v20.9.0

 

 

Node.js 로 간단 웹서버 구축 해보기 (1)

 

Node.js 를 기반으로 간단한 웹 사이트를 구축 해보겠습니다.

#프로젝트 폴더를 생성합니다#
[root@lab ~]# mkdir node_project && cd node_project/

#웹 사이트 사용을 위해 방화벽 정책을 추가#
[root@lab ~]# firewall-cmd --permanent --zone=public --add-port=3000/tcp
[root@lab ~]# firewall-cmd --reload


#npm 명령으로 프로젝트를 생성합니다#
[root@lab node_project]# npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help init` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (node_project) 
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /root/node_project/package.json:

{
  "name": "node_project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


#웹 사이트를 사용하기 위해 express 모듈을 설치합니다#
[root@lab node_project]# npm install express


#웹 사이트용 코드를 작성합니다#
[root@lab node_project]# vim app.js

# 웹 브라우저로 접속시 "Hello Wolrd" 가 표시되는 간단한 웹#
const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

 

 

Node.js 로 간단 웹서버 구축 해보기 (2)

#코드 실행 환경을 정의 합니다#
[root@lab node_project]# vim package.json 

{
  "name": "node_project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.18.2"
  }
}


#sciprt 뒤에 start 구분을 삽입합니다#

{
  "name": "node_project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start" : "node app.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.18.2"
  }
}

#Node 프로젝트 시작#
[root@lab node_project]# npm start
Example app listening on port 3000

 

최종 확인

 

웹 브라우저를 통해 해당 프로젝트 사이트에 접속 해봤습니다.

Nodejs 를 사용하면 별도의 Apache, Nginx 등을 설치하지 않고 웹 사이트를 구성 할 수 있습니다.

 

감사합니다.

 

1u서버 / APC / DB / defog / DEFOG랙 / dell5820 / dell5820t / dell7920 / dellpoweredge / dellr240 / dellr340 / dellr350 / dellr450 / dellr540 / dellr630 / dellr640 / dellr740 / dellr750 / dellserver / dellt40 / dellt440 / dellt5820 / dell서버 / DELL서버CPU / DELL서버RAID컨트롤러 / DELL서버SAS하드디스크 / DELL서버가격비교 / DELL서버가격비교견적 / DELL서버견적 / DELL서버구매 / DELL서버디스크교체 / DELL서버메모리 / DELL서버펌웨어 / DELL서버하드디스크구매 / dell워크스테이션 / dl20 / dl20gen10 / dl360 / dl360gen10 / dl380 / dl380g10 / dl380gen10 / ECC메모리 / EDFOG랙가격 / ESTSOFT / FIRMWARE / gpu서버 / gpu타워형서버 / HA솔루션 / hpdl20 / hpdl360 / hpdl360gen10 / hpdl380 / hpdl380g10 / HPE / HPE Service Pack for Proliant / HPE SPP / hpedl20 / hpedl20gen10 / hpedl360gen10 / hpe서버 / HPE서버CPU / HPE서버RAID컨트롤러 / HPE서버SAS하드디스크 / HPE서버가격비교 / HPE서버가격비교견적 / HPE서버견적 / HPE서버구매 / HPE서버드라이버설치 / HPE서버디스크교체 / HPE서버메모리 / HPE서버비용 / HPE서버펌웨어 / HPE서버하드디스크구매 / hpgen10 / hpml30 / hpserver / hpz2 / hpz4 / hpz420 / hpz440 / hpz4g4 / hpz640 / hpz6g4 / hpz8g4 / hp마이크로서버 / hp서버 / hp서버800 / hp서버800w / hp서버cto / hp서버pc / HP서버메모리 / hp서버컴퓨터 / HP서버펌웨어 / HP서버하드디스크 / hp워크스테이션 / hp프로라이언트 / HYPER BACKUP / ibm서버 / Intelligent Provisioning / KVM / KVM 기술지원비(비용) / KVM 설치비 / L2스위치 / L3스위치 / LENONO서버SAS하드디스크 / lenovop620 / lenovor650 / LENOVO서버 / LENOVO서버CPU / LENOVO서버RAID컨트롤러 / LENOVO서버가격비교 / LENOVO서버가격비교견적 / LENOVO서버견적 / LENOVO서버구매 / LENOVO서버디스크교체 / LENOVO서버메모리 / LENOVO서버하드디스크구매 / LENOVO펌웨어업데이트 / Linux / ML30 / ml30gen10 / ML350GEN10 / ML360 / MSSQL / MSSQL 기술지원비(비용) / MSSQL 설치비 / MYSQL / MySQL 기술지원비(비용) / MySQL 설치비 / OS설치 / p17079-b21 / poweredger740 / poweredger750 / precision5820 / QUADRO / QUADRO그래픽카드 / r240 / r340 / r440 / r740 / RHEL설치 / RMS랙 / server / serverpc / SOPHOS / SPP / sr250 / sr650 / SYNOLOGY / SYNOLOGY나스 / UPS / UPS기술지원 / UPS납품 / UPS설치 / V3 / Windows서버설치 / z420 / z620 / z840 / z8g4 / 기술지원비(비용) / 나스기술지원 / 나스설치지원 / 네트워크스위치 / 네트워크장비 / 더블테이크 / 데이터베이스 / 델5820 / 델서버 / 델서버비용 / 델서버펌웨어업데이트 / 델워크스테이션 / 델컴퓨터워크스테이션 / 디포그 / 디포그랙 / 디포그랙가격 / 딥러닝pc / 딥러닝서버 / 랙 / 랙(RACK) 기술지원비(비용) / 랙(RACK) 설치비 / 랙납품설치 / 랙설치 / 레노버p620 / 레노버서버 / 레노버워크스테이션 / 레노보서버 / 레노보서버펌웨어 / 레드헷설치 / 리눅스 기술지원비(비용) / 리눅스 설치비 / 리눅스서버 / 리눅스서버설치 / 리눅스서버트러블슈팅 / 리눅스트러블슈팅 / 리욱스 / 미니서버 / 미니서버랙 / 방화벽 / 방화벽 기술지원비(비용) / 방화벽 설치비 / 방화벽엔지니어 / 백업 / 보안솔루션 / 보안솔루션구매 / 보안솔루션설치 / 서버 / 서버 기술지원비(비용) / 서버 랙마운트비용 / 서버 설치비 / 서버 장애조치비용 / 서버CPU / 서버MEMORY / 서버OS설치 / 서버pc / 서버가격 / 서버구매 / 서버기술지원 / 서버납품 / 서버디스크장애처리 / 서버랙 / 서버렉마운트 / 서버메모리 / 서버몬 / 서버몬기술지원 / 서버백업 / 서버보안 / 서버엔지니어 / 서버용pc / 서버용그래픽카드 / 서버용메모리 / 서버용컴퓨터 / 서버용하드디스크 / 서버컴 / 서버컴퓨터 / 서버트러블슈팅 / 서버호스팅 / 소포스 / 스위치 / 스위치 기술지원비(비용) / 스위치 설치비 / 스토리지 / 스토리지 기술지원비(비용) / 스토리지 랙마운트비용 / 스토리지 설치비 / 스토리지 장애조치비용 / 스토리지납품설치 / 스토리지서버 / 시놀로지DS918 / 시놀로지HyperBackup / 시놀로지나스 / 시놀로지나스백업 / 시놀로지하이퍼백업 / 시큐어디스크 / 안랩 / 알약 / 왼도우서버설치 / 우분투설치 / 워크스테이션 / 워크스테이션pc / 워크스테이션컴퓨터 / 윈도우서버 / 윈도우서버2016 / 윈도우서버2019 / 윈도우서버트러블슈팅 / 윈도우즈 기술지원비(비용) / 윈도우즈 설치비 / 이스트소프트 / 이중화솔루션 / 이중화솔루션구매 / 이중화솔루션설치 / 인터넷디스크 / 작업장컴퓨터 / 제온서버 / 젠서버 / 중고서버 / 중고워크스테이션 / 카보나이트 / 카스퍼스키 / 컴퓨터서버 / 쿼드로P400 / 타워형서버 / 페도라설치 / 프로라이언트 / GPU서버 / 미니서버렉 / 서버용PC / 젠서버 / AI서버 / 제온서버 / 서버가격 / 1U서버 / HPDL20Gen10 / HP서버8SFF800W / 가상서버 / 타워형서버 / HPDL360 / HPDL380Gen10 / 컴퓨터서버 / 미디어서버 / 타워서버 / DB서버 / HP서버580 / HP서버파워 / HPDL360Gen10 / 윈도우서버컴퓨터 / XEON서버 / 881457-B21

댓글