Node.js 在 Windows Server 上的離線部署方案

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;通過這種方式可…