Node.js 在CentOS 8 开发环境
导言
Node.js是用于服务器端编程的JavaScript运行时。它允许开发人员使用JavaScript创建可扩展的后端功能,JavaScript是许多人从基于浏览器的Web开发中已经熟悉的语言。
在本指南中,我们将向您展示在CentOS 8服务器上安装Node.js的三种不同方式:
- 使用
dnf
从CentOS的默认AppStream存储库安装nodejs
软件包 - 安装节点版本管理器
nvm
,并使用它安装和管理多个版本的node
- 从源头构建和安装
node
大多数用户应该使用dnf
安装内置的预打包版本的Node。如果您是开发人员或以其他方式需要管理多个已安装版本的Node,请使用nvm
方法。对大多数用户来说,从源头构建很少必要。
先决条件
要完成本教程,您需要一台运行CentOS 8的服务器。我们将假设您以非root、启用sudo
的用户身份登录此服务器。要设置此设置,请参阅我们的CentOS 8初始服务器设置指南。
选项1——从CentOS AppStream存储库安装节点
Node.js可从CentOS 8的默认AppStream软件存储库获得。有多个版本可用,您可以通过启用适当的模块流在它们之间进行选择。首先使用dnf
命令列出nodejs
模块的可用流:
- sudo dnf module list nodejs
Name Stream Profiles Summary
nodejs 10 [d] common [d], development, minimal, s2i Javascript runtime
nodejs 12 common, development, minimal, s2i Javascript runtime
有两条流可供选择,10
和12条。[d]
表示版本10是默认流。如果您希望安装Node.js 12,请立即切换模块流:
- sudo dnf module enable nodejs:12
系统将提示您确认您的决定。之后,版本12流将被启用,我们可以继续安装。有关使用模块流的更多信息,请参阅CentOS AppStream官方文档。
使用dnf
安装nodejs
软件包:
- sudo dnf install nodejs
同样,dnf
将要求您确认它将采取的行动。按y
然后ENTER
,软件将安装。
通过查询其版本号的node
检查安装是否成功:
- node --version
v12.13.1
如果您安装Node.js 10,您的--version
输出将有所不同。
注:Node.js的两个可用版本都是长期支持版本,这意味着它们有一个更长的维护保障窗口。有关生命周期的更多信息,请参阅Node.js的官方发布页面。
Installing the nodejs
package should also install the npm
Node Package Manager utility as a dependency. Verify that it was installed properly as well:
- npm --version
6.12.1
此时,您已使用CentOS软件存储库成功安装Node.js和npm。下一节将展示如何使用节点版本管理器进行操作。
选项2——使用节点版本管理器安装节点
另一种安装Node.js的方法特别灵活,即使用nvm,即Node版本管理器。此软件允许您同时安装和维护许多不同版本的Node.js及其关联的Node软件包。
要在CentOS 8机器上安装NVM,请访问项目的GitHub页面。从主页上显示的README文件中复制curl
命令。这将为您提供最新版本的安装脚本。
在将命令引导到bash
之前,最好先审计脚本,以确保它没有做任何您不同意的事情。您可以通过删除curl
命令末尾的| bash
段来做到这一点:
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh
看看,确保你对它正在做出的改变感到满意。当您满意时,请再次运行命令,并在末尾附加| bash
”。您使用的URL将根据最新版本的NVM而更改,但从现在开始,可以通过键入来下载和执行脚本:
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
这将把nvm
脚本安装到您的用户帐户中。要使用它,您必须首先源您的.bash_profile
文件:
- source ~/.bash_profile
现在,您可以询问NVM哪些版本的节点可用:
nvm list-remote
. . .
v12.13.0 (LTS: Erbium)
v12.13.1 (LTS: Erbium)
v12.14.0 (LTS: Erbium)
v12.14.1 (LTS: Erbium)
v12.15.0 (LTS: Erbium)
v12.16.0 (LTS: Erbium)
v12.16.1 (Latest LTS: Erbium)
v13.0.0
v13.0.1
v13.1.0
v13.2.0
v13.3.0
v13.4.0
v13.5.0
v13.6.0
v13.7.0
v13.8.0
v13.9.0
v13.10.0
v13.10.1
v13.11.0
v13.12.0
这是一个很长的列表!您可以通过键入您看到的任何发布版本来安装节点版本。例如,要获取版本v13.6.0,您可以键入:
- nvm install v13.6.0
您可以通过键入来查看您安装的不同版本:
nvm list
-> v13.6.0
default -> v13.6.0
node -> stable (-> v13.6.0) (default)
stable -> 13.6 (-> v13.6.0) (default)
这显示了第一行(-> v13.6.0
)上当前活跃的版本,然后是一些命名别名和这些别名指向的版本。
注意:如果您还通过CentOS软件存储库安装了节点版本,您可能会在这里看到system -> v12.13.1
(或其他版本号)行。您始终可以使用nvm use system
激活节点的系统版本。
此外,您将看到节点各种长期支持(或LTS)版本的别名:
lts/* -> lts/erbium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.19.0 (-> N/A)
lts/erbium -> v12.16.1 (-> N/A)
我们也可以基于这些别名安装版本。例如,要安装最新的长期支持版本erbium
,请运行以下内容:
- nvm install lts/erbium
Downloading and installing node v12.16.1...
. . .
Now using node v12.16.1 (npm v6.13.4)
您可以在nvm use
的已安装版本之间切换:
nvm use v13.6.0
Now using node v13.6.0 (npm v6.13.4)
您可以使用其他部分中的相同技术来验证安装是否成功,方法是键入:
node --version
v13.6.0
正如我们预期的那样,我们的机器上安装了正确的节点版本。还提供兼容的npm
版本。
选项3——从源头安装节点
安装Node.js的另一种方法是下载源代码并自行编译。
为此,请使用您的网页浏览器导航到Node.js官方下载页面,右键单击源代码链接,然后单击复制链接地址或浏览器为您提供的任何类似选项。
回到您的SSH会话,首先确保您位于可以写入的目录中。我们将使用当前用户的个人目录:
- cd ~
然后键入curl
,粘贴您从网站上复制的链接,然后使用| tar xz
关注它:
- curl https://nodejs.org/dist/v12.16.1/node-v12.16.1.tar.gz| tar xz
这将使用curl
实用程序下载源,然后将其直接管道连接到tar
实用程序,tar实用程序将将其提取到当前目录中。
进入新创建的源目录:
- cd node-v*
为了编译代码,我们需要从CentOS存储库下载一些软件包。立即使用dnf
安装这些:
- sudo dnf install gcc-c++ make python2
系统将提示您确认安装。键入y
,然后ENTER
。现在,我们可以配置和编译软件:
- ./configure
- make -j4
编译需要很长时间(在四核服务器上大约30分钟)。我们使用-j4
选项运行了四个并行编译过程。您可以省略此选项或根据可用处理器内核的数量更新数量。
编译完成后,您可以通过键入以下内容将软件安装到系统上:
- sudo make install
要检查安装是否成功,请让Node显示其版本号:
- node --version
v12.16.1
如果您看到正确的版本号,则安装成功完成。默认情况下,Node还安装了兼容的npm
版本,因此它也应该可用。
结论
在本教程中,我们展示了如何使用CentOS AppStream软件存储库、使用Node Version Manager和从源编译来安装Node.js。
如果您想了解有关JavaScript编程的更多信息,请阅读我们的相关教程系列:
- 如何在Javascript中编码:适用于浏览器和Node.js的JavaScript语言的全面概述
- 如何在N