NEWS

新闻

了解openKylin最新资讯,关注社区和产品动态。

NEWS

Learn about the latest news.

openKylin系统安装Node.js运行环境及其进程管理

2025-02-11 10:23:55


01
前言

Node.js作为一个开源、跨平台的JavaScript运行时环境,自2009年发布以来凭借其独有的事件驱动、非阻塞I/O模型等特性,在高性能web服务器开发中脱颖而出。此外,Node.js在还广泛应用于前端构建工具、服务端渲染、自动化测试等场景,已逐步成为web前端研发人员必备的技术栈之一。本文主要介绍如何在openKylin系统上安装部署Node.js运行环境,并对其运行进程进行监控和管理。




02
Node.js语言特性

  • 事件驱动:Node.js的事件驱动模型依托libuv的事件循环(Event-Loop)机制,通过不断检查事件队列并依次处理已完成的异步任务,确保程序在单线程环境下能够高效地调度和执行事件处理逻辑。

  • 非阻塞I/O:非阻塞I/O模型允许系统在执行I/O操作(如文件读取、网络请求等)时,不阻塞主线程继续处理其他任务,所有I/O操作都以异步方式发起,再交由事件循环处理,显著提升了I/O密集型任务响应速度。

  • 单线程:Node.js采用单线程机制,仅维护一个主线程,没有线程间切换的开销,而是通过事件驱动和非阻塞I/O机制来实现并行处理,适用于高并发I/O密集型应用。

  • 轻量级:Node.js的运行时环境轻量且快速,因自身代码库简洁可快速启动且易部署维护,又因其单线程事件驱动模型进而内存占用少,此外还可通过丰富的npm生态系统灵活扩展功能而不过多增加自身负担。‌




03
Node.js环境安装

Node.js可以通过多种方式进行安装,本文主要介绍最通用的两种方式:手动下载安装、包管理器安装。

1.手动下载安装

1) 查看操作系统信息

uname -m

如下内容表示当前计算机硬件架构为x86_64, 后续需下载对应的Node安装包。

openKylin(开放麒麟)

2)前往Node.js官网https://nodejs.cn/download/下载当前系统对应的安装包

openKylin(开放麒麟)

3)解压安装包(以v20.17.0-linux-x64版本为例)

tar -xf node-v20.17.0-linux-x64.tar.xz

前往解压后目录执行下方命令以查看Node.js版本信息,若正确显示v20.17.0,则表示当前安装包可正常运行。

./node-v20.17.0-linux-x64/bin/node -v

openKylin(开放麒麟)

4) 配置环境变量

至此系统已经拥有可运行的Node.js环境,但此时的node命令只能通过绝对安装路径访问。通过配置系统环境变量,可以让node成为全局可用的命令。

vim ~/.bashrc

在文件最后追加下方两行代码(NODE_HOME需替换为本地可执行node路径):

export NODE_HOME=/home/kylin/node/node-v20.17.0-linux-x64export PATH=$PATH:$NODE_HOME/bin

加载环境变量配置:

source ~/.bashrc

5)查看node和npm版本信息

若此时能正常显示node和npm版本信息,则表示环境变量配置成功。

node -vnpm -v

openKylin(开放麒麟)

以上是手动下载安装Node.js运行环境的具体过程,该安装方式操作步骤简单、安装稳定性高,但在进行不同版本切换时,需要重复进行下载、安装的操作,过程相对繁琐。因此如果在开发过程中需要频繁进行Node.js版本切换,建议使用下方的包管理器安装方式。


2.包管理器安装

nvm(Node Version Manager)是一个Node.js版本管理工具,可以方便地进行不同版本的安装、查看和切换操作。通过nvm安装Node.js的具体操作如下:

1)安装nvm

sudo apt install nvm

2) 加载环境变量配置文件

source ~/.bashrc

3) 查看nvm版本

nvm -v

若此时能正常显示nvm版本信息,则表示nvm安装成功。

openKylin(开放麒麟)

4)nvm查看可安装的Node.js版本

nvm ls-remote

5)安装目标版本(以V20为例,nvm会自动安装Node 20大版本下的最新LTS版本)

nvm install 20

6) 查看node和npm 版本是否正确

node -vnpm -v

若此时能正常显示node和npm版本信息,则表示Node.js安装成功。

openKylin(开放麒麟)

至此系统已经拥有可运行的Node.js环境,nvm作为版本管理工具,日常使用还涉及版本查看、切换等高频操作,以下将介绍相关命令的具体使用:

1) 查看当前系统已安装的Node版本

nvm ls

2)切换版本(需确保version对应的版本已安装至本地)

nvm use <version>

3)设置默认版本

nvm alias default <version>

4)卸载版本

nvm uninstall <version>




04
Node.js 进程管理

Node.js依靠其单线程和非阻塞 I/O 模型,从而具备强大的高并发处理能力。然而,单线程机制也带来了一些挑战,如无法充分利用多核 CPU,存在单点故障导致进程崩溃的风险。因此,在生产环境中,Node.js 服务通常会借助进程管理工具来优化部署,确保服务的稳定性和性能。

PM2 作为一个开源进程管理器, 提供了生产级的负载均衡、进程守护、日志、监控等能力, 是Node.js服务进程管理的最佳选择之一。以下将介绍在openkylin系统上如何通过PM2来部署一个Node.js的应用服务。

1)安装PM2

npm install pm2 -g

通过下方命令查看 pm2 版本,若版本信息输出正常,则表示pm2已成功安装。

pm2 -v

2)启动服务

以下提供一个简易的Node.js服务器脚本以供部署测试使用,脚本命名为app.js,具体内容如下:

const http = require('node:http');const server = http.createServer((req, res) => {  res.writeHead(200, { 'Content-Type': 'application/json' });  res.end(JSON.stringify({    data: 'Hello World!',  }));});server.listen(8000);

通过PM2直接启动应用:

pm2 start app.js --name app

上图展示了当前启动应用的基本信息,包括应用名称、进程id、应用状态、cpu和内存用量等。通过浏览器访问8000端口验证web服务是否可正常访问。

至此已经通过PM2成功启动了一个基础web服务,但是在生产环境中,考虑到服务的稳定性和运行性能,一般会采用PM2的集群模式部署应用,以充分利用多核CPU资源。

PM2通过-i选项来开启集群模式,其中启动进程数可由PM2自动检测,也可自行指定。

pm2 start app.js --name app -i max

max参数表示PM2会自动检测可用CPU的数量并扩展相同数量的进程。也可自行指定扩展进程数量:

pm2 start app.js --name app -i 4

3) 服务日志

PM2日志模块会在~/.pm2/logs目录下为每个进程服务分配两个默认的日志文件:${APP_NAME}-out.log用于记录正常输出日志、${APP_NAME}-error.log用于记录错误日志。

4) 服务监控

PM2提供了内置监控工具,允许用户实时查看服务运行状态和性能监控指标。

pm2 monit
openKylin(开放麒麟)




05
小结

本文介绍了在openKylin系统上部署Node.js运行环境以及通过PM2进行进程管理的相关操作,基于此可完成一个基础应用的部署。因篇幅有限,部分高阶用法未展开详述,如有兴趣可前往Node.js和PM2官网进行深入学习。