Ubuntu平台下安装Node相关环境

news2025/3/31 7:17:37

说明:在进行VUE、TS等开发需要用到NodeJS相关环境,不同的项目有时候需要不同的Node版本支撑。本文将详细讲解NVM、Node、Yarn、PM2等环境安装的实施步骤。

测试服务器环境:22.04 LTS。

1. NVM

定义:Node Version Manager(Node.js版本管理工具),简称nvm,是一个用于管理多个Node.js版本的命令行工具。它允许开发者在同一台机器上安装和切换不同版本的Node.js,从而解决不同项目对不同Node.js版本的依赖问题。

Github:nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

安装方式:

1)通过官网脚本:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
# 或者 
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash

这个方式安装很可能报错。可以考虑用下文的手动方式。

2)源码安装:

# 直接从github官网下载最新的release版本源码包,或者git clone下载源码。
# 本文安装版本 nvm-0.40.2,2025年3月27日,存放在某路径下,比如 ~ 路径。
cd /opt/nvm-0.40.2   # 本文存放在 /opt 目录下

# activate nvm by sourcing it from your shell: 
. ./nvm.sh

# add these lines to your ~/.bashrc, ~/.profile, or ~/.zshrc file to have it automatically sourced upon login: (you may have to add to more than one of the above files)
# 可以选择 .bashrc 和 .profile 文件。编辑如下:
export NVM_DIR="/opt/nvm-0.40.2"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
# 注意上面的路径根据实际情况填写

# 刷新配置文件,生效
source ~/.bashrc
source ~/.profile

# 注意:如果在不同用户下,则可能均要去 ~ 目录中进行配置。

常用指令:

# 安装最新版本
nvm install node # "node" is an alias for the latest version

# install a specific version of node
nvm install 18.20.8 # or v18.20.8, 12.22.1, etc

# set an alias
nvm alias my_alias v18.20.8
# Make sure that your alias does not contain any spaces or slashes.

# 列出当前可安装版本
nvm ls-remote

# 查看已安装的Node.js版本
nvm list

# 使用指定版本,在不同版本之间切换
nvm use 版本号

# 卸载指定版本
nvm uninstall 版本号

# 查看当前版本
nvm current
nvm version # 在Linux上显示的是node当前版本
nvm --version # 显示nvm本身的版本

# 查看路径
nvm which 18.20.8
# /opt/nvm-0.40.2/versions/node/v18.20.8/bin/node

2. NodeJS

有了上面 NVM的管理,可以直接跳转到 5)进行设置处理。

1)更新系统包管理器 apt 和 apt-get  (下载压缩包安装,可以直接跳转到 4)进行处理)

sudo apt update
sudo apt-get update

2)使用apt进行安装

sudo apt-get install nodejs     # 下载nodejs
sudo apt-get install npm        #下载npm,它是nodejs的包管理器(nodejs package manager)

3)升级npm

npm install npm -g

在我的服务器上因为版本问题安装升级失败,考虑将apt方式安装的版本卸载。

sudo apt-get remove --purge npm
sudo apt-get remove --purge nodejs
sudo apt-get remove --purge nodejs-legacy
sudo apt-get autoremove

然后手动删除 npm 相关目录,通过find / -name npm 查找,主要是 usr/local/lib 和 usr/local/bin 等目录下内容。

4)从官网下载安装从官网(Node.js — Download Node.js®)下载版本:node-v16.13.2-linux-x64.tar.xz,上传至服务器,解压。

xz -d node-v16.13.2-linux-x64.tar.xz
tar -xvf node-v16.13.2-linux-x64.tar

建立软链接:

ln -s /home/nodejs/node-v16.13.2-linux-x64/bin/node /usr/local/bin/
ln -s /home/nodejs/node-v16.13.2-linux-x64/bin/npm /usr/local/bin/
ln -s /home/nodejs/node-v16.13.2-linux-x64/bin/npx /usr/local/bin/

5)设置国内镜像加速

npm config -g get registry
# 旧的淘宝镜像已失效
# sudo npm config -g set registry https://registry.npm.taobao.org
# 新的淘宝镜像
sudo npm config -g set registry https://registry.npmmirror.com

6)安装cnpm(可选)

国内的npm不是很好用,使用cnpm代替npm的日常使用。

npm install cnpm -g

安装完后,可以看到node的bin目录下,多了cnpm,也需要建立一下软链接:

ln -s /home/nodejs/node-v16.13.2-linux-x64/bin/cnpm /usr/local/bin/

3. Yarn

Yarn 是一个快速、可靠、安全的依赖管理工具,主要用于 JavaScript 项目,但它也可以用于其他语言和框架。它允许开发者轻松地安装、更新和管理项目所需的软件包。安装yarn方式如下:

npm install yarn -g
# 设置国内加速
# yarn config set registry https://registry.npm.taobao.org/
# 新的淘宝镜像
yarn config set registry https://registry.npmmirror.com -g
# -g 一定放在后面,否则报错

如果出现下面的错误:

npm ERR! code CERT_HAS_EXPIRED
npm ERR! errno CERT_HAS_EXPIRED
npm ERR! request to https://registry.npm.taobao.org/yarn failed, reason: certificate has expired

npm ERR! A complete log of this run can be found in: /root/.npm/_logs/2024-03-01T01_09_52_672Z-debug-0.log

则解决方案:

# 清除npm缓存
npm cache clean --force

# 取消ssl验证:
npm config set strict-ssl false

再次执行安装,即可。

查看安装情况:

npm list -global

但在系统中执行yarn,提示命令找不到,这个时候需要和 node一样,做一个软链接。

ln -s /opt/node/bin/yarn /usr/local/bin/

yarn的常用指令

yarn init:快速初始化一个项目,生成 package.json 文件。
yarn add <package> 命令安装指定的软件包。
yarn upgrade <package> 命令更新指定软件包到最新版本。
yarn remove <package> 命令卸载不再需要的软件包。

yarn install:安装 package.json 中列出的所有依赖。
yarn install --force:强制重新安装所有依赖,忽略缓存。
yarn upgrade <package>:升级指定包到最新版本。
yarn upgrade:升级所有包到最新版本。

yarn run <script>:运行 package.json 中定义的脚本,例如 yarn run start 或 yarn run build。
yarn <script>:直接运行脚本,例如 yarn start 或 yarn build。

yarn cache clean:清理 Yarn 的全局缓存。
yarn cache dir:查看缓存目录。

yarn info <package>:查看包的详细信息,包括版本、依赖等。
yarn list <package>:列出项目中已安装的指定包及其版本。

yarn优势

  • 速度:相比传统的 npm,Yarn 在安装依赖时速度更快,因为它可以并行处理多个请求。
  • 可靠性:Yarn 使用锁定文件(yarn.lock)来确保在不同环境中安装的依赖版本一致。
  • 安全性:在安装过程中验证软件包的完整性,防止恶意软件的入侵。

4. PM2

PM2(Process Manager 2 )是具有内置负载均衡器的Node.js应用程序的生产运行时和进程管理器。 它允许您永久保持应用程序活跃,无需停机即可重新加载它们,并促进常见的Devops任务。

4.1 PM2特性

1)日志管理:应用程序日志保存在服务器的硬盘中~/.pm2/logs/

2)负载均衡:PM2可以通过创建共享同一服务器端口的多个子进程来扩展您的应用程序。这样做还允许您以零秒停机时间重新启动应用程序。

3)终端监控:可以在终端中监控您的应用程序并检查应用程序运行状况(CPU使用率,使用的内存,请求/分钟等)。

4)SSH部署:自动部署,避免逐个在所有服务器中进行ssh。

5)静态服务:支持静态服务器功能

6)多平台支持:适用于Linux(稳定)和macOS(稳定)和Windows(稳定)

4.2 PM2安装

npm install pm2 -g
# 或者 
yarn global add pm2
 # 或者
apt update && apt install sudo curl && curl -sL https://raw.githubusercontent.com/Unitech/pm2/master/packager/setup.deb.sh | sudo -E bash -

安装完毕后,可以通过 npm list -global 查看:

这个时候还需要建立软链接:

ln -s /opt/node/bin/pm2 /usr/local/bin/

这样就可以直接使用 pm2 指令了。

4.3 PM2使用

# 启动服务:
pm2 start app.js                //启动app.js应用
pm2 start app.js --name demo    //启动应用并设置name
pm2 start app.sh                //脚本启动
# 针对复杂的指令,避免执行问题,可以新建一个脚本文件来处理。

# 停止服务:
pm2 stop all               //停止所有应用
pm2 stop [AppName]        //根据应用名停止指定应用
pm2 stop [ID]             //根据应用id停止指定应用

# 删除应用:
pm2 delete all               //关闭并删除应用
pm2 delete [AppName]        //根据应用名关闭并删除应用
pm2 delete [ID]            //根据应用ID关闭并删除应用

# 创建开机自启动:
pm2 startup
# 会自动新建一个后台服务启动脚本
#[PM2] Freeze a process list on reboot via:
pm2 save
#[PM2] Remove init script via:
pm2 unstartup systemd

# 更新:
pm2 updatePM2
pm2 update

# 监听模式:
pm2 start app.js --watch    //当文件发生变化,自动重启

# 静态服务器:
pm2 serve ./dist 9090        //将目录dist作为静态服务器根目录,端口为9090

# 启用集群模式(自动负载均衡):
//max 表示PM2将自动检测可用CPU的数量并运行尽可能多的进程
//max可以自定义,如果是4核CPU,设置为2者占用2个
pm2 start app.js -i max

# 重新启动:
pm2 restart app.js        //同时杀死并重启所有进程。短时间内服务不可用。生成环境推荐使用reload

# 0秒停机重新加载:
pm2 reload app.js        //重新启动所有进程,始终保持至少一个进程在运行
pm2 gracefulReload all   //优雅地以群集模式重新加载所有应用程序

# 查看启动列表:
pm2 list

# 查看每个应用程序占用情况:
pm2 monit

# 显示应用程序所有信息:
pm2 show [Name]      //根据name查看
pm2 show [ID]        //根据id查看

# 日志查看:
pm2 logs            //查看所有应用日志
pm2 logs [Name]    //根据指定应用名查看应用日志
pm2 logs [ID]      //根据指定应用ID查看应用日志

# 保存当前应用列表:
pm2 save

# 重启保存的应用列表:
pm2 resurrect

# 清除保存的应用列表:
pm2 cleardump

# 保存并恢复PM2进程:
pm2 update

PM2配置文件方式:

生成配置文件:

pm2 ecosystem        //生成一个示例JSON配置文件
pm2 init

配置文件示例:

module.exports = {
    apps : [{
        name      : 'API',      //应用名
        script    : 'app.js',   //应用文件位置
        env: {
            PM2_SERVE_PATH: ".",    //静态服务路径
            PM2_SERVE_PORT: 8080,   //静态服务器访问端口
            NODE_ENV: 'development' //启动默认模式
        },
        env_production : {
            NODE_ENV: 'production'  //使用production模式 pm2 start ecosystem.config.js --env production
        },
        instances:"max",          //将应用程序分布在所有CPU核心上,可以是整数或负数
        watch:true,               //监听模式
        output: './out.log',      //指定日志标准输出文件及位置
        error: './error.log',     //错误输出日志文件及位置,pm2 install pm2-logrotate进行日志文件拆分
        merge_logs: true,         //集群情况下,可以合并日志
        log_type:"json",          //日志类型
        log_date_format: "DD-MM-YYYY",  //日志日期记录格式
    }],
    deploy : {
        production : {
            user : 'node',                      //ssh 用户
            host : '212.83.163.1',              //ssh 地址
            ref  : 'origin/master',             //GIT远程/分支
            repo : 'git@github.com:repo.git',   //git地址
            path : '/var/www/production',       //服务器文件路径
            post-deploy : 'npm install && pm2 reload ecosystem.config.js --env production'  //部署后的动作
        }
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2323814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows Server 2025 使用 IIS 搭建 ASP.NET 3.5 网站

开启远程桌面 参考文章Windows server开启远程桌面教程打开服务管理器。ECS 配置安全组&#xff0c;开启 3389Telnet 验证网络联通性 telnet x.x.x.x 338安装 Windows App&#xff0c;登录验证 安装 ASP.NET 3.5 1.参考文章Windows Server 2012安装 .NET Framework 3.5和 Wi…

【强化学习】基于深度强化学习的微能源网能量管理与优化策略研究【Python】

目录 主要内容 程序要点 2.1 微能源网系统组成 2.2 强化学习及Q学习算法 部分代码 运行结果 下载链接 主要内容 该程序借助深度 Q 网络&#xff08;DQN&#xff09;&#xff0c;学习预测负荷、风 / 光可再生能源功率输出及分时电价等环境信息&#xff0c;运用…

楼宇自控借何种技术,驱动建筑迈向高效绿色

在全球积极倡导可持续发展的大背景下&#xff0c;建筑行业作为能源消耗和碳排放的大户&#xff0c;实现高效绿色发展迫在眉睫。楼宇自控系统凭借其先进的技术手段&#xff0c;成为推动建筑向高效绿色转型的关键力量。那么&#xff0c;楼宇自控究竟借助哪些技术&#xff0c;让建…

监控易一体化运维:监控易机房管理,打造高效智能机房

在数字化浪潮中&#xff0c;企业对数据中心和机房的依赖程度与日俱增&#xff0c;机房的稳定运行成为业务持续开展的关键支撑。信息化的变迁&#xff0c;见证了机房管理从传统模式向智能化、精细化转变的过程。今天&#xff0c;就为大家深度剖析监控易在机房管理方面的卓越表现…

PHP安装HTML转图片的扩展GD库的使用

修改你的PHP.ini文件,找到以下位置 ;extensionphp_gd2.dll 把前面的;去掉…

清华大学第10讲:迈向未来的AI教学实验396页PPT 探索未来教育的无限可能|附PPT下载方法

导 读INTRODUCTION 今天跟大家分享的是清华大学新闻与传播学院、人工智能学院双聘教授沈阳教授团队出品的《迈向未来的AI教学实验》课程作业集&#xff0c;随着人工智能技术的飞速发展&#xff0c;教育领域也迎来了前所未有的变革。该报告为沈阳教授与学生们在“迈向未来的AI教…

《白帽子讲 Web 安全》之服务端请求伪造(SSRF)深度剖析:从攻击到防御

引言 在当今复杂的网络环境中&#xff0c;Web 应用安全犹如一座时刻需要精心守护的堡垒。随着技术的不断演进&#xff0c;各类安全威胁层出不穷&#xff0c;其中服务端请求伪造&#xff08;SSRF&#xff09;正逐渐成为令开发者与安全从业者头疼的一大难题。吴翰清在《白帽子讲…

豪越消防一体化安全管控平台:消防管理智能化

在社会快速发展、城市建设日益复杂的今天&#xff0c;消防安全始终是保障人民生命财产安全、维护社会稳定的重要基石。传统消防管理模式在应对当下复杂多变的消防安全需求时&#xff0c;逐渐暴露出诸多局限性&#xff0c;而豪越消防一体化平台的出现&#xff0c;为消防管理领域…

瑞芯微RK356X主板复用接口配置方法,触觉智能嵌入式方案商

本文介绍瑞芯微RK356X系列复用接口配置的方法&#xff0c;基于触觉智能RK3562开发板演示&#xff0c;搭载4核A53处理器&#xff0c;主频高达2.0GHz&#xff1b;内置独立1Tops算力NPU&#xff0c;可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。 复…

NX二次开发刻字功能——预览功能

这个预览功能其实在NX软件中很常见,有利于建模者确定刻字的位置,这个功能早在唐康林老师的超级长方体教程中出现过。我只是学以致用。把该功能集成刻字中。 在勾选预览的同时,如果点击放大镜也就是显示预览结果,要刻字的对象透明度数值为70,同时预览结果文字会变成撤销,如…

容器主机CPU使用率突增问题一则

关键词 LINUX、文件系统crontab 、mlocate根目录使用率 There are many things that can not be broken&#xff01; 如果觉得本文对你有帮助&#xff0c;欢迎点赞、收藏、评论&#xff01; 一、问题现象 业务一台容器服务器&#xff0c;近期经常收到cpu不定期抖动告警&#x…

华为hcia——Datacom实验指南——配置IPv4静态路由,默认路由和浮动静态路由

什么是IPv4 IPv4静态路由&#xff0c;是手动配置的&#xff0c;不会随着网络拓扑的变化而变化&#xff0c;所配置的路由信息也不会在网络中传播&#xff0c;所以它主要运用在小型网络或者作为动态路由的补充。 IPv4的配置 配置的命令很简单 IP route-static &#xff08;目…

【Apache Hive】

一、Hive简介 官网&#xff1a;https://hive.apache.org 1、Hive是什么&#xff1f; Apache Hive 是一款建立在Hadoop之上的开源数据仓库系统&#xff0c;可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表&#xff0c;基于表提供了一种类似SQL的查询模型…

SQL Server安装进度卡在 57%:Windows Update 服务异常

问题现象&#xff1a; 安装 SQL Server 2022 时进度停滞在 57%&#xff0c;日志报错 Error code 0x80070422&#xff0c;提示 “Windows Update 服务未运行”。 快速诊断 检查服务状态&#xff1a; # 查看 Windows Update 服务状态 Get-Service -Name wuauserv | Select-Object…

YOLO历代发展 图像增强方式 架构

YOLO1 YOLOV5 数据增强 mosaic 仿射变换(Affine)、透视变换(Perspective) 网络搭建

DexGrasp Anything:具有物理-觉察的普遍机器人灵巧抓取

25年3月来自上海科技大学的论文“DexGrasp Anything: Towards Universal Robotic Dexterous Grasping with Physics Awareness”。 能够抓取任何物体的灵巧手&#xff0c;对于通用具身智能机器人的开发至关重要。然而&#xff0c;由于灵巧手的自由度高&#xff0c;物体种类繁多…

对称加密算法和非对称加密算法

在这个互联网普及的时代&#xff0c;在不同终端对敏感甚至机密数据进行传输是非常常见的场景&#xff0c;但是如何保证数据传输过程的安全性和高效性是一个值得深入探讨的问题。 为此&#xff0c;伟大的人类研究出了多种加密算法&#xff0c;我们可以大致将其分为两类&#xf…

【计算机网络】OSI七层模型完全指南:从比特流到应用交互的逐层拆解

OSI模型 导读一、概念二、模型层次结构2.1 物理层&#xff08;Physical Layer&#xff09;2.2 数据链路层&#xff08;Data Link Layer&#xff09;​2.3 ​网络层&#xff08;Network Layer&#xff09;​2.4 ​传输层&#xff08;Transport Layer&#xff09;​2.5 ​会话层&…

数据不互通、审批慢?如何实现多系统智能协同

在企业信息化建设的过程中&#xff0c;数据孤岛和复杂的审批流程常常成为实现高效协同的巨大障碍。对于许多组织来说&#xff0c;面对越来越复杂的业务需求&#xff0c;如何实现多系统智能协同不仅关乎效率&#xff0c;更直接影响企业的竞争力。 数据不互通和审批流程慢的痛点…