在 CentOS 8|RHEL 8|Rocky Linux 8 上安装 Node.js 18在 CentOS 8|RHEL 8|Rocky Linux 8 上安装 Node.js 18在 CentOS 8|RHEL 8|Rocky Linux 8 上安装 Node.js 18在 CentOS 8|RHEL 8|Rocky Linux 8 上安装 Node.js 18
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

在 CentOS 8|RHEL 8|Rocky Linux 8 上安装 Node.js 18

发表 admin at 2025年2月28日
类别
  • 未分类
标签

我们都知道 JavaScript 是一种一次性编写、随处运行的语言。 Node.js 是一种流行的编程语言,主要是因为它使用 JavaScript 作为主要应用程序来创建新应用程序。 JavaScript 是开发人员开发新 Web 应用程序的首选,这使得 NodeJS 在创建服务器端 Web 应用程序方面具有强大的框架。 NodeJS 基于 Chrome 的 V8 JavaScript 引擎构建,为开发人员提供跨平台、非阻塞(异步)、事件驱动的运行时环境,以使用 JavaScript 构建高度可扩展的服务器端应用程序。在本文中,我们将介绍 Node.js 18 LTS CentOS 8|RHEL 8|Rocky Linux 8 的安装。

NodeJS的特点和应用

NodeJS 的一些很酷的功能是:

  • NodeJS 是一种单线程语言 – 它使用多个线程来执行异步代码
  • NodeJS 本质上是非阻塞的 – 它在等待前一个任务的响应的同时执行堆栈中的下一个任务
  • 它是异步且事件驱动的 – 所有 NodeJS API 都是异步的。 NodeJS 服务器从不等待 API 返回数据,而是使用事件机制来获取响应
  • 软件包管理器 (NPM) 的可用性 – NPM 是最大的 NodeJS 软件存储库,拥有超过 700,000 个代码包。您可以使用 npm 包管理器在几秒钟内快速安装分布式包。下载公开发布的软件包无需注册或登录。
  • NodeJS 是轻量级且可扩展的 – Node.js 的轻量级使其适合用于开发微服务。通过将整体应用程序分解为微服务,您还可以获得更好的灵活性,并且易于扩展。
  • NodeJS 中没有缓冲 – 用 NodeJS 编写的应用程序从不缓冲任何数据。这意味着用户可以轻松地流式传输视频,而不会因数据以块的形式输出而中断。

NodeJS的主要应用在以下几个关键领域

  • 创建 Web 应用程序 – 非常适合创建单页应用程序
  • 创建聊天应用程序 – 使用 NodeJS,您可以构建任何复杂程度的实时聊天
  • 创建流媒体应用程序 – 在创建用于听音乐或观看视频的流媒体服务时,这是一个不错的选择。
  • 创建实时应用程序 – 用于项目管理、音频和视频会议以及协同浏览的应用程序。它能够处理大量 I/O 操作,使其适合创建实时应用程序。
  • 浏览器游戏 – 使用 Node.js 开发游戏是另一个有吸引力的用例
  • 创建 REST API、静态文件服务器、操作系统包装器、微控制器、无人机等

Node.js 常用的堆栈有:

  • MERN 堆栈:MongoDB + ExpressJS + React+ NodeJS
  • MEAN 堆栈:MongoDB + ExpressJS + Angular + NodeJS
  • MEVN 堆栈:MongoDB + ExpressJS + VueJS+ NodeJS

Node.js 18 LTS 中有哪些新增功能?

截至本文更新日,Node.js 社区发布了新的主要版本 – Node.js 18 LTS。此版本将于 2022 年 10 月进入长期支持 (LTS)。对于此版本的 Node.js,我们将重点介绍一些新的有趣的功能。

  • 它附带 V8 JavaScript 引擎版本 10.x – V8 JavaScript 引擎是用 C++ 编写的运行时环境
  • OPENSSL 3 支持 - Node.js 18 是第一个通过 OpenSSL3 升级为 LTS 的主要版本
  • 默认 DNS 解析 – NodeJS 现在遵循基于 dns 条目返回的顺序。它不再偏好 IPv4 而不是 IPv6
  • 实验性获取 - 在 18 版本中为高级 API 添加了 WHATWG Fetch
  • 实验测试运行程序 – 这提供了一种快速、简单的方法来运行测试套件,而无需任何额外的依赖项
  • 流改进
  • ECMAScript 模块改进
  • 改进对 AbortController 和 AbortSignal 的支持

在 CentOS 8|RHEL 8|Rocky Linux 8 上安装 Node.js 18

按照下一节中的步骤在 CentOS 7/RHEL 7 Linux 系统上安装 Node.js 18 LTS。

选项 1) 使用 RPM 存储库在 CentOS 8|RHEL 8|Rocky Linux 8 上安装 Node.js 18

在 CentOS 8|RHEL 8|Rocky Linux 8 上添加 Node.js 18 LTS 存储库

curl --silent --location https://rpm.nodesource.com/setup_18.x | sudo bash -

存储库在文件 /etc/yum.repos.d/nodesource-el7.repo 中配置。配置存储库后,继续在 CentOS 7/RHEL 7 上安装 Node.js 18 LTS。

sudo yum -y install nodejs

对于正在为 Node.js 构建插件和扩展的用户,您可能需要安装开发工具

sudo yum -y install gcc-c++ make

如果需要,安装 Yarn 包管理器

curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn

检查安装的 NodeJS 版本

$ node -v
v18.0.0

选项 2) 使用 NVM 在 CentOS 8|RHEL 8|Rocky Linux 8 上安装 Node.js 18

还可以使用 NVM 在 Linux 系统上安装 Node.js 软件包。 NVM(Node Version Manager)是每个 shell 调用的 Node.js 的版本管理器。它可以在任何兼容 POSIX 的 shell(bash、sh、dash、ksh、zsh)上运行。通过使用nvm,您可以通过命令行快速安装和使用不同版本的node。

由于基于 RHEL 的系统默认未安装 nvm,因此请运行以下命令进行安装。

curl -LsS https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | sh -s --

通过获取 shell rc 文件开始使用 nvm:

### Bash ###
$ source ~/.bashrc

### Zsh ###
$ source ~/.zshrc

执行的脚本将 nvm 存储库克隆到 ~/.nvm,并尝试将下面代码段中的源代码行添加到正确的配置文件 (~/.bash_profile, <代码>~/.zshrc、~/.profile 或 ~/.bashrc)。

使用 ls-remote 列出 Node.js 的可用版本:

$ nvm ls-remote
....
        v16.7.0
        v16.8.0
        v16.9.0
        v16.9.1
.....
        v17.9.0
        v18.0.0

让我们安装 Node.js 18 版本:

$ nvm install 18

执行输出示例:

Downloading and installing node v18.0.0...
Downloading https://nodejs.org/dist/v18.0.0/node-v18.0.0-linux-x64.tar.xz...
############################################################################################################################################################################################ 100.0%
Computing checksum with sha256sum
Checksums matched!
^[[Now using node v18.0.0 (npm v8.6.0)
Creating default alias: default -> 18 (-> v18.0.0)

您可以使用 nvm 命令安装其他 LTS 版本:

### Install Node.js 16 ###
$ nvm install 16
Downloading and installing node v16.14.2...
Downloading https://nodejs.org/dist/v16.14.2/node-v16.14.2-linux-x64.tar.xz...
############################################################################################################################################################################################ 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v16.14.2 (npm v8.5.0)

### Install Node.js 14 ###
$ nvm install 14
Downloading and installing node v14.19.1...
Downloading https://nodejs.org/dist/v14.19.1/node-v14.19.1-linux-x64.tar.xz...
############################################################################################################################################################################################ 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v14.19.1 (npm v6.14.16)

### Install Node.js 12 ###
$ nvm install 12
Downloading and installing node v12.22.12...
Downloading https://nodejs.org/dist/v12.22.12/node-v12.22.12-linux-x64.tar.xz...
############################################################################################################################################################################################ 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v12.22.12 (npm v6.14.16)

列出已安装的 Node.js 版本:

$ nvm list
->    v12.22.12
       v14.19.1
       v16.14.2
        v18.0.0

使用特定版本的 NodeJS

### Syntax ###
$ nvm use <version

# Examples
$ nvm use 18
Now using node v18.0.0 (npm v8.6.0)
$ nvm use 16
Now using node v16.14.2 (npm v8.5.0)

在 Node.js 上创建示例应用程序

安装 Node.js 18 LTS 后,让我们构建第一个 Web 服务器。创建一个名为 app.js 的文件

vi myapp.js

我的包含以下内容:

const http = require('http');

const hostname = '0.0.0.0';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World, running on NodeJS 18');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

现在,使用以下命令运行 Node Web 服务器:

node myapp.js

访问http://localhost_or_serverip:3000,您将看到一条消息“Hello World”。

使用 PM2 管理 Node.js 应用程序

PM2 是 Process Management Module 的缩写,用于运行和管理 Node.js 应用程序。 PM2 可以在服务出现故障时自动重新启动服务并将其恢复正常。 PM2 可以安装在 Linux、macOS 和 Windows 操作系统上。

因斯塔

### Using NPM ###
sudo npm install -g pm2

### Using NVM ###
npm install pm2 -g

使用 PM2 启动 Node.js 应用程序。

pm2 start myapp.js

应用程序启动后,您将收到如下响应:

[PM2] Starting /home/rocky/myapp.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬──────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name     │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼──────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ myapp    │ default     │ N/A     │ fork    │ 24806    │ 0s     │ 0    │ online    │ 0%       │ 32.6mb   │ rocky    │ disabled │
└─────┴──────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

PM2 备忘单

列出所有 Node.js 进程/应用程序

$ pm2 ls
┌─────┬──────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name     │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼──────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ myapp    │ default     │ N/A     │ fork    │ 24806    │ 31s    │ 0    │ online    │ 0%       │ 48.1mb   │ rocky    │ disabled │
└─────┴──────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

启动流程

pm2 start myapp.js

重新启动应用程序的所有实例

pm2 restart pm2 desc myapp

使 PM2 在系统重新启动时自动启动

显示有关应用程序的更多详细信息

$ pm2 show 0
 Describing process with id 0 - name myapp
┌───────────────────┬───────────────────────────────────────┐
│ status            │ online                                │
│ name              │ myapp                                 │
│ namespace         │ default                               │
│ version           │ N/A                                   │
│ restarts          │ 1                                     │
│ uptime            │ 23s                                   │
│ script path       │ /home/rocky/myapp.js                  │
│ script args       │ N/A                                   │
│ error log path    │ /home/rocky/.pm2/logs/myapp-error.log │
│ out log path      │ /home/rocky/.pm2/logs/myapp-out.log   │
│ pid path          │ /home/rocky/.pm2/pids/myapp-0.pid     │
│ interpreter       │ node                                  │
│ interpreter args  │ N/A                                   │
│ script id         │ 0                                     │
│ exec cwd          │ /home/rocky                           │
│ exec mode         │ fork_mode                             │
│ node.js version   │ 18.0.0                                │
│ node env          │ N/A                                   │
│ watch & reload    │ ✘                                     │
│ unstable restarts │ 0                                     │
│ created at        │ 2022-04-22T22:29:12.399Z              │
└───────────────────┴───────────────────────────────────────┘
...

检查流程的详细信息。

pm2 desc myapp

将应用程序扩展到n 个进程

$ pm2 scale myapp 5
[PM2] Scaling up application
[PM2] Scaling up application
[PM2] Scaling up application
[PM2] Scaling up application
┌─────┬──────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name     │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼──────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ myapp    │ default     │ N/A     │ fork    │ 24843    │ 8h     │ 1    │ online    │ 0%       │ 59.1mb   │ rocky    │ disabled │
│ 1   │ myapp    │ default     │ N/A     │ fork    │ 25912    │ 0s     │ 0    │ online    │ 0%       │ 47.0mb   │ rocky    │ disabled │
│ 2   │ myapp    │ default     │ N/A     │ fork    │ 25918    │ 0s     │ 0    │ online    │ 0%       │ 43.9mb   │ rocky    │ disabled │
│ 3   │ myapp    │ default     │ N/A     │ fork    │ 25925    │ 0s     │ 0    │ online    │ 0%       │ 28.3mb   │ rocky    │ disabled │
│ 4   │ myapp    │ default     │ N/A     │ fork    │ 25928    │ 0s     │ 0    │ online    │ 0%       │ 14.8mb   │ rocky    │ disabled │
└─────┴──────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

监控应用程序的日志和指标

pm2 monit myapp

使用Ctrl + C退出监控屏幕。

要检查特定进程或应用程序的日志,请使用以下命令:

pm2 logs 0
pm2 logs myapp

刷新所有日志

pm2 flush myapp

停止应用程序:

pm2 stop myapp

删除应用程序

$ pm2 delete myapp
[PM2] Applying action deleteProcessId on app [myapp](ids: [ 0, 1, 2, 3, 4 ])
[PM2] [myapp](0) ✓
[PM2] [myapp](1) ✓
[PM2] [myapp](2) ✓
[PM2] [myapp](3) ✓
[PM2] [myapp](4) ✓

结论

Node.js 允许您高效地构建独立于平台的 Web 应用程序。在本文中,我们详细介绍了在 CentOS 8|RHEL 8|Rocky Linux 8 Linux 系统上安装 Node.js 18 的过程。我们还分享了在 Node 服务器中启动应用程序的过程。安装和使用 PM2 使我们能够轻松管理应用程序生命周期。

类似指南:

  • 使用 Wetty 在 Web 浏览器上运行 Linux 终端
  • 在 Ubuntu 上安装和使用 AngularJS
  • Zsh、Bash 和 Fish 的最佳终端 Shell 提示
©2015-2025 Norria support@norria.com