当前位置: 首页 > article >正文

如何在阿里云linux主机上部署Node.Js

在阿里云的Linux服务器上搭建Node.js编程环境可以通过以下步骤完成。这里以常见的 Ubuntu/CentOS 系统为例,提供两种安装方式(包管理器、NVM多版本管理):


一、通过包管理器安装(适合快速安装指定版本)

1. Ubuntu/Debian 系统
# 更新系统包列表
sudo apt update# 安装Node.js(默认版本可能较旧,推荐使用NodeSource仓库)
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -  # LTS版本
# 或指定版本(如18.x)
# curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt install -y nodejs# 验证安装
node -v  # 输出示例:v18.16.1
npm -v   # 输出示例:9.5.1
2. CentOS/RHEL 系统
# 更新系统
sudo yum update -y# 启用NodeSource仓库(以Node.js 18为例)
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -# 安装Node.js
sudo yum install -y nodejs# 验证
node -v
npm -v

二、通过NVM安装(推荐,支持多版本切换)

1. 安装NVM(Node Version Manager)
# 下载并安装NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash# 重新加载环境变量(或重新登录)
source ~/.bashrc  # 若使用zsh则改为 ~/.zshrc# 验证NVM
nvm --version  # 输出示例:0.39.7
2. 使用NVM安装Node.js
# 查看可用版本
nvm ls-remote# 安装指定版本(如18.16.1)
nvm install 18.16.1# 设置默认版本
nvm alias default 18.16.1# 验证
node -v
npm -v

三、配置全局npm包和项目环境

1. 安装常用全局工具
# 安装yarn、pm2、nodemon等
npm install -g yarn pm2 nodemon typescript# 验证
yarn --version
pm2 --version
2. 配置npm镜像加速(可选)
# 设置淘宝镜像
npm config set registry https://registry.npmmirror.com# 验证配置
npm config get registry

四、部署Node.js应用示例

1. 创建简单HTTP服务
# 创建项目目录
mkdir myapp && cd myapp# 初始化npm项目
npm init -y# 安装Express(示例)
npm install express# 创建app.js文件
echo "const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Hello from Alibaba Cloud!'));
app.listen(3000, () => console.log('Server running on port 3000'));" > app.js# 启动服务
node app.js
2. 通过PM2持久化运行
# 使用PM2启动应用(后台运行、自动重启)
pm2 start app.js --name "myapp"# 查看进程列表
pm2 list# 设置开机自启
pm2 startup
pm2 save

五、配置阿里云安全组

  1. 登录阿里云控制台,进入ECS实例的安全组配置。
  2. 添加入方向规则,开放Node.js服务端口(如3000):
    • 协议类型:自定义TCP
    • 端口范围:3000/3000
    • 授权对象:0.0.0.0/0(或按需限制IP)

六、验证外部访问

在浏览器或通过curl访问:

curl http://<阿里云公网IP>:3000
# 应返回:Hello from Alibaba Cloud!

七、注意事项

  1. 版本选择:生产环境建议使用LTS版本(如18.x、20.x)。
  2. 权限问题:避免使用root运行Node.js服务,可通过pm2systemd管理。
  3. 防火墙:确保阿里云安全组和服务器防火墙(如ufw/firewalld)均放行端口。
  4. 资源监控:使用htoppm2 monit或阿里云监控查看资源使用情况。

按照以上步骤操作后,你的阿里云Linux服务器即可支持Node.js开发与部署。

附件:流程图

image.png

相关文章:

如何在阿里云linux主机上部署Node.Js

在阿里云的Linux服务器上搭建Node.js编程环境可以通过以下步骤完成。这里以常见的 Ubuntu/CentOS 系统为例&#xff0c;提供两种安装方式&#xff08;包管理器、NVM多版本管理&#xff09;&#xff1a; 一、通过包管理器安装&#xff08;适合快速安装指定版本&#xff09; 1. …...

VS Code连接远程服务遇到的问题

目录 一、VS Code链接远程服务 二、修改的文件不能保存 三、无法与 "Ip地址" 建立连接: 远程主机密钥已更改&#xff0c;端口转发已禁用. 四、解决远程连接后&#xff0c;每次断开让输入密码问题&#xff0c;实现免密登录 没有秘钥对&#xff0c;免密配置流程&a…...

算法学习第十六天:动态规划(补充题目)

动态规划题 目录 最大乘积子数组股票买卖问题最长递增子序列零钱兑换编辑距离 最大乘积子数组 问题描述 给定一个整数数组&#xff0c;求乘积最大的连续子数组的乘积。 关键点 需要同时记录当前最大值和最小值&#xff08;负负得正&#xff09;状态转移方程&#xff1a; …...

最长连续子序列和的所含元素 -- Kadane算法拓展

建议先回顾经典Kadane算法 -- 最长连续子序列和&#xff1a; 最大连续子序列和&#xff08;动态规划 -- 经典Kadane算法&#xff09;-CSDN博客 拓展代码&#xff1a; def max_subarray_sum(nums):global_max current_max nums[0]left right temp 0for i in range(1, len(…...

大模型训练 | 智能体知识库 资源收集之心理咨询问答数据集

最近我一直在研究AI大模型相关的内容&#xff0c;想着从现在开始慢慢收集各种各样的资源&#xff0c;万一以后需要训练大模型的时候可以用到&#xff0c;或者自己以后也许会需要。今天我想介绍一组“心理咨询问答数据集”产品&#xff0c;包含9414条心理咨询问答数据&#xff0…...

AI Agent开发大全第十一课-超维空间里的语义翻译官:Embedding技术

一、Embedding:数字世界的"翻译官"与"导航仪" 1.1 从字符到向量的魔法 当我们输入"巧克力"三个字时,传统计算机只能识别ASCII码组成的符号序列,而Embedding技术就像给每个词语配备了"超维定位坐标"。通过深度学习模型,它将离散的…...

2024年第九届全国固态电池研讨会(脱敏)PPT合集(41份).zip

2024年第九届全国固态电池研讨会&#xff08;脱敏&#xff09;PPT合集&#xff0c;共41份。供大家参考学习。 1、锂金属全固态电池关键材料与器件.pdf 2、聚醚基聚合物锂金属电池.pdf 3、氧化物固态电解质与高能量密度安全固态锂电池.pdf 4、复合固态电解质界面设计工艺探索与…...

OpenCV三维解算常用方法C++

如果标定过程是通过OpenCV张正友标定法实现的&#xff0c;得到的内参外参保存在.txt文件中是这样的形式&#xff1a; ① 内参intrinsics.txt&#xff1a; ② 外参extrinsics.txt&#xff1a; 那么可以通过如下方法读取.txt文件获取左右相机内外参&#xff0c;主要包括三维解算…...

JavaScript 类型转换:全面解析与实践

引言 在 JavaScript 编程里&#xff0c;类型转换是一个频繁出现且极为重要的操作。由于 JavaScript 是一种动态类型语言&#xff0c;变量的类型在运行时可以改变&#xff0c;这就使得类型转换变得十分常见。类型转换主要分为隐式类型转换和显式类型转换&#xff0c;下面将详细…...

Qt Concurrent Filter and Filter-Reduce

并行滤波和滤波-还原 QtConcurrent::filter()、QtConcurrent::filtered() 和 QtConcurrent::filedReduced() 函数并行过滤序列中的项目&#xff0c;如QList 。QtConcurrent::filter() 就地修改序列&#xff0c;QtConcurrent::filtered() 返回包含过滤内容的新序列&#xff0c;…...

【蓝桥杯每日一题】3.25

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x “OJ超时不是终点&#xff0c;是算法在提醒你该优化时间复杂度了&#xff01;” 目录 3.25 差分数组 一、一维差分 题目链接&#xff1a; 题目描述&#xff1a; 解题思路&#xff1a;…...

深挖增长内核:好产品驱动增长的全方位解析

年前在老板的带领下深入学习了《增长黑客》&#xff0c;并思考了在CPS站外引流的落地方案&#xff0c;最近刚好在做京东联盟的京粉推客增长体系建设&#xff0c;再次回顾一下增长黑客方法以及记录一下思考。 好产品才是增长的根本。增长黑客理念风靡&#xff0c;“啊哈时刻” 概…...

Python技术栈与数据可视化创意实践详解(三)

Python在数据可视化领域凭借丰富的库和灵活的生态系统&#xff0c;能够实现从基础图表到复杂交互式可视化的全场景覆盖。以下从技术选型、创意实现到实战优化进行系统化解析&#xff0c;并提供可直接落地的代码示例。 一、Python数据可视化技术栈 1. 基础与统计可视化 Matplotl…...

前端NVM安装

https://v0.dev/chat/settings 本地启动环境 1安装 nvm 2安装node nvm install v18.19.0 nvm install v20.9.0 nvm use 18 node -v 3安装 pnpm npm install -g pnpm 或者 npm i -g pnpm 4启动 代码 目录下 执行 pnpm i pnpm run dev 4.1到代码目录下 4.2直接cmd…...

Springboot应用配置github自动流部署 深入理解CI/CD:构建、测试和部署的自动化完整流程

什么是 CI 持续集成 通过自动化的流程和工具&#xff0c;提高软件开发的效率、质量和交付速度。 持续集成是开发团队通过将代码的不同部分集成到共享存储库中&#xff0c;并频繁地进行构建和测试&#xff0c;以确保代码的一致性和稳定性。 概念 在现在的开发模式中&#x…...

解锁DeepSeek潜能:Docker+Ollama打造本地大模型部署新范式

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是Docker 2、什么是Ollama 二、准备工作 1、操…...

c++R 格式

问题描述 小蓝最近在研究一种浮点数的表示方法&#xff1a;RR 格式。对于一个大于 0 的浮点数 dd&#xff0c;可以用 RR 格式的整数来表示。给定一个转换参数 nn&#xff0c;将浮点数转换为 RR 格式整数的做法是: 将浮点数乘以 2n2n&#xff1b; 四舍五入到最接近的整数。 …...

qt QOffscreenSurface详解

1、概述 QOffscreenSurface 是 Qt 中用于离屏渲染的一个类。它允许在不直接与屏幕交互的情况下进行 OpenGL 渲染操作&#xff0c;常用于生成纹理、预渲染场景等。通过 QOffscreenSurface&#xff0c;可以在后台创建一个渲染表面&#xff0c;进行绘制操作&#xff0c;并将结果捕…...

基于Spring Boot的消防物资存储系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

深度学习算法清单

目录 1. 神经网络必备基础知识点 2. 神经网络前向传播与反向传播 3. 网络模型整体架构分析实例 4. 神经网络建模效果分析 5. 激活函数与过拟合问题解决 6. 卷积神经网络核心知识点 7. 卷积建模流程与各参数作用分析 8. 池化层的作用与效果 9. 经典卷积神经网络架构分析…...

docker ssh远程连接

目录 操作命令&#xff1a; 确保 SSH 配置允许 root 登录&#xff1a; docker提交&#xff1a; 操作命令&#xff1a; # 进入容器 docker exec -ti lbg04 /bin/bash# 更新包管理并安装 SSH 服务&#xff08;Ubuntu/Debian 示例&#xff09; apt-get update apt-get install…...

leetcode 20.有效括号

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; class Solution:def isValid(self, s: str) -> bool:stack []for i in s :if i in ((,{,[ ):stack.append(i)elif i in () ):# 这种情况是 栈弹出元素为空时候 &#xff0c;右半部分的括号多出来一些 比如&#x…...

【杂记三】Cython加速模块cython_nms未编译

一、问题 from cython_nms import nms as cnms ModuleNotFoundError: No module named cython_nms Github download 需要生成如下的 二、安装编译编译安装 cython_nms 1. 确保已经安装了 Cython conda activate your-env pip install cython2. 编译编译 cython_nms 进入编译…...

LeetCode(977):有序数组的平方

有序数组的平方 题目链接 题目&#xff1a;给你一个按非递减顺序排序的整数数组 nums&#xff0c;返回每个数字的平方组成的新数组&#xff0c;要求也按非递减顺序排序。 //暴力 #include<stdio.h> void sort(int *nums,int n){for(int i0;i<n;i)for(int ji1;j<…...

订票系统|基于Java+vue的火车票订票系统(源码+数据库+文档)

订票系统目录 基于Springbootvue的火车票订票系统 一、前言 二、系统设计 三、系统功能设计 1会员信息管理 2 车次信息管理 3订票订单管理 4留言板管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍…...

「Unity3D」使用C#获取Android虚拟键盘的高度

原理是&#xff1a;利用getWindowVisibleDisplayFrame方法&#xff0c;获取Android窗口可见区域的Rect&#xff0c;这个Rect剔除了状态栏与导航栏&#xff0c;并且在有虚拟键盘遮挡的时候&#xff0c;会剔除这个遮挡区域。 接着&#xff0c;Unity的safeArea也剔除了状态栏与导…...

近场通信(NFC)在电动车启动系统中的技术实现路径

电动车NFC一键启动系统基于13.56MHz频段实现非接触控制&#xff0c;技术方案要点如下&#xff1a; ‌系统架构‌ ‌硬件核心‌ NFC芯片&#xff08;如N32G45x&#xff09;处理通信协议&#xff0c;支持手机/卡片识别STM32主控解析指令&#xff0c;AES-128加密模块保障双向认证…...

斜线、短横、空格,三种分隔日期的优雅解析(Python | DeepSeek)

标准日期解析操作&#xff0c;str.replace链式如灵蛇蜿蜒&#xff0c;三元表达式像空灵仙家妙法。 笔记模板由python脚本于2025-03-25 22:32:24创建&#xff0c;本篇笔记适合三元表达式、字符串操作修习的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在…...

自动化逆向框架使用(Objection+Radare2)

1. 工具链架构与核心优势 1.1 动静结合逆向体系 graph LR A[动态分析] -->|Objection实时Hook| B[关键点定位] B --> C[行为数据捕获] D[静态分析] -->|Radare2深度解析| E[控制流重建] E --> F[漏洞模式识别] B --> F C --> F 组合优势对比&…...

inline 配置全局参数变量

在 C 中&#xff0c;对于头文件中定义的全局变量&#xff0c;使用 inline 比 static 更优&#xff0c;主要原因如下&#xff1a; 1. 避免重复定义的多个副本 static 的问题 每个包含该头文件的 .cpp 都会生成一个独立的变量副本&#xff0c;导致&#xff1a; 内存浪费&#xf…...