Node.js 在 Windows Server 上的离线部署方案

离线部署的核心是提前准备所有依赖资源(避免在线下载),并通过本地配置完成服务搭建,整体分为「依赖准备」「环境配置」「项目部署」「服务注册」4个阶段。

一、提前准备离线资源(关键:在有网机器操作)

需准备 3 类核心资源,确保无网环境下可完整安装:

资源类型获取方式注意事项
Node.js 离线安装包1. 访问 Node.js 官网
2. 选择对应版本(建议 LTS 版,如 20.x)
3. 下载 Windows 离线包(msizip,优先 msi 自动配置环境变量)
确认 Windows Server 系统架构(32/64 位),下载对应版本。
项目依赖包(node_modules)1. 在有网机器上,拷贝项目源码到本地
2. 执行 npm install --production(只装生产依赖,减小体积)
3. 压缩生成的 node_modules 文件夹
确保有网机器与 Windows Server 系统架构一致(避免依赖编译后不兼容,如 node-gyp 相关包)。
可选:编译依赖环境若项目依赖需编译(如 sqlite3 bcrypt),需提前下载:
1. Python 离线安装包
2. Visual Studio Build Tools 离线包
离线安装时,需先装 Python + Build Tools,再解压 node_modules(或执行本地依赖安装)。

二、Windows Server 环境配置(无网机器操作)

1. 安装 Node.js 环境

  1. 将下载的 Node.js msi 包拷贝到 Windows Server,双击运行安装;
  2. 安装向导中,勾选「Add to PATH」(自动配置环境变量,无需手动改),其余默认下一步;
  3. 验证安装:打开「命令提示符(CMD)」,执行以下命令,显示版本即成功:
    node -v  # 如 v20.11.0
    npm -v   # 如 10.2.4
    
    • 若用 zip 包:解压到指定目录(如 D:\Node.js),手动添加 D:\Node.jsD:\Node.js\node_global 到「系统环境变量-PATH」,再验证版本。

2. 配置项目目录

  1. 在 Windows Server 上创建项目目录(如 D:\NodeProjects\your-app);
  2. 拷贝以下文件到该目录:
    • 项目源码(app.js/server.js 入口文件、package.json、配置文件等);
    • 提前压缩的 node_modules 文件夹,解压到项目根目录(与 package.json 同级)。

三、项目部署与测试

1. 本地启动测试(验证项目可运行)

  1. 打开 CMD,进入项目目录:
    cd D:\NodeProjects\your-app
    
  2. 执行启动命令(根据项目入口文件调整,如 app.js):
    node app.js
    
  3. 验证服务:
    • 本地验证:在 Server 上打开浏览器,访问 http://localhost:端口号(如 http://localhost:3000),若返回正常页面/API 结果,说明项目可运行;
    • 局域网验证:在同一局域网机器上,访问 http://Windows Server IP:端口号(如 http://192.168.1.100:3000),确保端口未被防火墙拦截(需开放端口,见下文「故障排查」)。

2. 解决端口占用问题(可选)

若启动时报「端口被占用」,执行以下命令排查并释放:

  1. 查看端口占用情况(以端口 3000 为例):
    netstat -ano | findstr ":3000"
    
  2. 找到 PID(最后一列数字),结束对应进程:
    taskkill /F /PID 1234  # 1234 替换为实际 PID
    

四、注册 Windows 服务(实现后台运行+开机自启)

直接用 node app.js 启动后,关闭 CMD 服务会停止,需将 Node 项目注册为 Windows 系统服务,推荐用 pm2(轻量且支持 Windows 服务)。

1. 离线安装 pm2(提前在有网机器准备)

  1. 在有网机器上,执行 npm install pm2 -g(全局安装 pm2);
  2. 找到 pm2 安装目录(默认路径:C:\Users\用户名\AppData\Roaming\npm\node_modules\pm2);
  3. pm2 文件夹压缩,拷贝到 Windows Server 的 Node 全局模块目录(默认:C:\Users\用户名\AppData\Roaming\npm\node_modules\),解压覆盖。

2. 用 pm2 管理 Node 服务

  1. 进入项目目录,执行启动命令(指定入口文件,如 app.js):
    pm2 start app.js --name "your-app-name"  # --name 自定义服务名,方便管理
    
  2. 验证 pm2 服务状态:
    pm2 list  # 查看服务列表,状态为 "online" 即正常
    

3. 注册为 Windows 系统服务(开机自启)

  1. 执行 pm2 服务安装命令:
    pm2-service-install  # 弹出提示,直接按 Enter 确认(默认服务名 PM2)
    
  2. 验证系统服务:
    • 打开「控制面板 → 管理工具 → 服务」;
    • 找到「PM2」服务,确认「启动类型」为「自动」,「状态」为「正在运行」。

五、部署验证与故障排查

1. 最终验证

  • 重启 Windows Server,检查「PM2」服务是否自动启动;
  • 访问 http://Server IP:端口号,确认项目正常响应。

2. 常见问题解决

问题现象排查方向
服务启动后无法访问1. 检查端口是否开放(Windows 防火墙 → 高级设置 → 入站规则,添加端口允许)
2. 确认项目监听地址不是 127.0.0.1(需改为 0.0.0.0,允许外部访问)。
依赖报错(如 “module not found”)1. 检查 node_modules 是否完整(对比有网机器的文件夹大小)
2. 若依赖需编译,确认已安装 Python + Build Tools。
PM2 服务启动失败1. 查看 PM2 日志:pm2 logs
2. 检查 Windows 事件查看器(「Windows 日志 → 应用程序」),定位错误原因。

总结

离线部署的关键是提前规避“在线依赖”:所有 Node 环境、项目依赖、工具(如 pm2)都需在有网环境打包,再拷贝到 Windows Server;通过 pm2 注册系统服务,确保服务稳定运行且开机自启,最后验证端口和依赖兼容性即可完成部署。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringAI接入openAI配置出现的问题全解析

SpringAI接入openAI配置出现的四个问题全解析1、无法下载openAI或SpringAI依赖包1.1、思路就是从哪个源下载所需的依赖包1.2、解决思路:我们可以看阿里的中央仓库是否有集成SpringAI的依赖,从它这里下也是可以的。我们看看阿里云云效maven地址&#xff0…

自然语言处理——02 文本预处理(上)

1 认识文本预处理 概念: 文本语料在输送给模型前一般需要一系列的预处理工作,才能符合模型输入的要求;比如:将文本转化成模型需要的张量、规范张量的尺寸;比如: 关于数据X:数据有没有脏数据、数…

数据结构:二叉树的链式存储

用链表来表示一棵二叉树,即用指针指向来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。 我们之前就已经说过,二叉树是递归…

【Spring Boot把日志记录到文件里面】

<?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 日志输出格式 --><property name"LOG_PATTERN" value"%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n" /><!-- 日志…

大数据服务完全分布式部署- 其他组件(阿里云版)

ZooKeeper 安装 官网 解压 cd /export/server/ tar -zxvf /export/server/apache-zookeeper-3.9.3-bin.tar.gz -C /export/server/软链接 ln -s /export/server/apache-zookeeper-3.9.3-bin /export/server/zookeeper配置 cd /export/server/zookeeper/ mkdir zkDatamyid…

Windows 平板/电脑 上使用 DHCPSRV 搭建 DHCP 服务器

一、DHCPSRV 核心优势 轻量便携:单文件绿色软件,无需安装 全图形界面:比命令行工具更友好 支持IPv4/IPv6:满足现代网络需求 低资源占用:适合平板电脑运行(内存<10MB) 租约管理:可查看实时IP分配情况 二、超详细配置流程 1. 下载与初始化 官网下载:http://www…

ArcGIS动态表格批量出图

前言&#xff1a;产品介绍&#xff1a;ArcGIS动态表格扩展模块Mapping and Charting Solutions&#xff0c;可用于插入动态表格&#xff0c;与数据驱动结合&#xff0c;出图效率无敌。注&#xff1a;优先选择arcgis10.2.2。 一、首先是根据自身携带的arcgis数据进行下载对应的…

Linux小白加油站,第三周周考

1.如何查看当前系统中所有磁盘设备及其分区结构(如磁盘名称、大小、挂载点等)? lsblk # 显示磁盘名称、大小、挂载点&#xff08;P21&#xff09;2.若需对空闲磁盘(如/dev/sdb)进行交互式划分&#xff0c;如何进入操作界面并创建一个5GB的主分区(类型为Linux默认文件系统)? …

SEO的红利没了,下一个风口叫GEO

一、 搜索在退场&#xff0c;答案在上台过去二十多年&#xff0c;我们习惯了这样的路径&#xff1a;输入关键词 → 点开一堆蓝色链接 → 慢慢筛出想要的信息。SEO&#xff08;搜索引擎优化&#xff09;就是围绕这套游戏规则展开的&#xff0c;谁玩得溜&#xff0c;谁就有流量、…

Kubernetes 的 YAML 配置文件-apiVersion

Kubernetes的YAML配置文件–apiVersion 关于 Kubernetes 的 apiVersion 说明 以及 生产环境中推荐使用的版本 的完整指南,帮助你正确、安全地编写 Kubernetes 配置文件。 一、什么是 apiVersion? 在 Kubernetes 的 YAML 配置文件中,apiVersion 字段用于指定你所使用的 Kub…

uniapp 5+App项目,在android studio模拟器上运行调试

1.安装android studio&#xff0c;默认安装即可 点击下载android studio 2.安装完成后&#xff0c;添加设备 选择机型并下载 启动模拟机&#xff08;启动比较慢&#xff0c;稍等一会即可&#xff09; 3.等待模拟器启动后&#xff0c;在uniapp上运行项目到模拟器 如果下…

Qt猜数字游戏项目开发教程 - 从零开始构建趣味小游戏

Qt猜数字游戏项目开发教程 - 从零开始构建趣味小游戏 项目概述 本项目是一个基于Qt框架开发的猜数字游戏&#xff0c;具有现代化的UI设计和完整的游戏逻辑。项目采用C语言开发&#xff0c;使用Qt的信号槽机制实现界面交互&#xff0c;通过随机数生成和状态管理实现完整的游戏…

初识CNN05——经典网络认识2

系列文章目录 初识CNN01——认识CNN 初识CNN02——认识CNN2 初识CNN03——预训练与迁移学习 初识CNN04——经典网络认识 文章目录系列文章目录一、GoogleNet——Inception1.1 1x1卷积1.2 维度升降1.3 网络结构1.4 Inception Module1.5 辅助分类器二、ResNet——越深越好2.1 梯…

学习笔记分享——基于STM32的平衡车项目

学习笔记分享——基于STM32的平衡车项目前言笔记正文结语前言 本文是我在学习铁头山羊的平衡车教程的过程中&#xff0c;记录的笔记&#xff0c;里面不但有Up主的讲解&#xff0c;也有我个人的学习心得&#xff0c;还有查阅的资料&#xff0c;由于内容太多&#xff0c;不方便逐…

学习strandsagents的http_request tool

今天我们通过来拆strandsagents官网的一个例子来学习strandsagents的http_request tool https://strandsagents.com/latest/documentation/docs/examples/python/agents_workflows/ 看上去能做实事核查,实际上没那么高大上。 Show me the code https://github.com/strands-…

大模型对齐算法(四): DAPO,VAPO,GMPO,GSPO, CISPO,GFPO

DAPO DAPO 在 GRPO 的基础上做了 4 处关键升级&#xff0c;既保持 GRPO 的“无价值函数 组内归一化”思想&#xff0c;又通过 剪枝、采样、Token 级梯度、长度惩罚 解决长 Chain-of-Thought RL 的四大痛点。 1 剪枝范围解耦&#xff1a;Clip-Higher GRPO&#xff1a;单一对称…

OpenHarmony之「星链Data」—— 分布式数据管理子系统核心架构与实战解密

目录 系统概述 架构设计 核心模块详解 数据库实现与设计原理 关键函数调用流程链 实际案例分析 常见需求与Bug分析 性能监控与调优

基于SpringBoot+Vue的写真馆预约管理系统(邮箱通知、WebSocket及时通讯、协同过滤算法)

&#x1f388;系统亮点&#xff1a;邮箱通知、WebSocket及时通讯、协同过滤算法&#xff1b;一.系统开发工具与环境搭建1.系统设计开发工具前后端分离项目架构&#xff1a;B/S架构 运行环境&#xff1a;win10/win11、jdk17前端&#xff1a; 技术&#xff1a;框架Vue.js&#xf…

linux下timerfd和posix timer为什么存在较大的抖动?

在linux中开发引用&#xff0c;timerfd和posix timer是最常用的定时器。timerfd是linux特有的定时器&#xff0c;通过fd来实现定时器&#xff0c;体现了linux"一切皆文件"的思想&#xff1b;posix timer&#xff0c;只要符合posix标准的操作系统&#xff0c;均应支持…

网络聚合链路与软件网桥配置指南

网络聚合链路与软件网桥配置指南一、聚合链路&#xff08;Team&#xff09; 网络组队&#xff08;聚合链路&#xff09;是一种将多个网络接口控制器&#xff08;NIC&#xff0c;Network Interface Controller&#xff09;以逻辑方式组合在一起的技术&#xff0c;通过这种方式可…