Node.js 在 Windows Server 上的離線部署方案
離線部署的核心是提前準備所有依賴資源(避免在線下載),并通過本地配置完成服務搭建,整體分為「依賴準備」「環境配置」「項目部署」「服務注冊」4個階段。
一、提前準備離線資源(關鍵:在有網機器操作)
需準備 3 類核心資源,確保無網環境下可完整安裝:
資源類型 | 獲取方式 | 注意事項 |
---|---|---|
Node.js 離線安裝包 | 1. 訪問 Node.js 官網 2. 選擇對應版本(建議 LTS 版,如 20.x) 3. 下載 Windows 離線包( msi 或 zip ,優先 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 環境
- 將下載的 Node.js
msi
包拷貝到 Windows Server,雙擊運行安裝; - 安裝向導中,勾選「Add to PATH」(自動配置環境變量,無需手動改),其余默認下一步;
- 驗證安裝:打開「命令提示符(CMD)」,執行以下命令,顯示版本即成功:
node -v # 如 v20.11.0 npm -v # 如 10.2.4
- 若用
zip
包:解壓到指定目錄(如D:\Node.js
),手動添加D:\Node.js
和D:\Node.js\node_global
到「系統環境變量-PATH」,再驗證版本。
- 若用
2. 配置項目目錄
- 在 Windows Server 上創建項目目錄(如
D:\NodeProjects\your-app
); - 拷貝以下文件到該目錄:
- 項目源碼(
app.js
/server.js
入口文件、package.json
、配置文件等); - 提前壓縮的
node_modules
文件夾,解壓到項目根目錄(與package.json
同級)。
- 項目源碼(
三、項目部署與測試
1. 本地啟動測試(驗證項目可運行)
- 打開 CMD,進入項目目錄:
cd D:\NodeProjects\your-app
- 執行啟動命令(根據項目入口文件調整,如
app.js
):node app.js
- 驗證服務:
- 本地驗證:在 Server 上打開瀏覽器,訪問
http://localhost:端口號
(如http://localhost:3000
),若返回正常頁面/API 結果,說明項目可運行; - 局域網驗證:在同一局域網機器上,訪問
http://Windows Server IP:端口號
(如http://192.168.1.100:3000
),確保端口未被防火墻攔截(需開放端口,見下文「故障排查」)。
- 本地驗證:在 Server 上打開瀏覽器,訪問
2. 解決端口占用問題(可選)
若啟動時報「端口被占用」,執行以下命令排查并釋放:
- 查看端口占用情況(以端口 3000 為例):
netstat -ano | findstr ":3000"
- 找到 PID(最后一列數字),結束對應進程:
taskkill /F /PID 1234 # 1234 替換為實際 PID
四、注冊 Windows 服務(實現后臺運行+開機自啟)
直接用 node app.js
啟動后,關閉 CMD 服務會停止,需將 Node 項目注冊為 Windows 系統服務,推薦用 pm2(輕量且支持 Windows 服務)。
1. 離線安裝 pm2(提前在有網機器準備)
- 在有網機器上,執行
npm install pm2 -g
(全局安裝 pm2); - 找到 pm2 安裝目錄(默認路徑:
C:\Users\用戶名\AppData\Roaming\npm\node_modules\pm2
); - 將
pm2
文件夾壓縮,拷貝到 Windows Server 的 Node 全局模塊目錄(默認:C:\Users\用戶名\AppData\Roaming\npm\node_modules\
),解壓覆蓋。
2. 用 pm2 管理 Node 服務
- 進入項目目錄,執行啟動命令(指定入口文件,如
app.js
):pm2 start app.js --name "your-app-name" # --name 自定義服務名,方便管理
- 驗證 pm2 服務狀態:
pm2 list # 查看服務列表,狀態為 "online" 即正常
3. 注冊為 Windows 系統服務(開機自啟)
- 執行 pm2 服務安裝命令:
pm2-service-install # 彈出提示,直接按 Enter 確認(默認服務名 PM2)
- 驗證系統服務:
- 打開「控制面板 → 管理工具 → 服務」;
- 找到「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 注冊系統服務,確保服務穩定運行且開機自啟,最后驗證端口和依賴兼容性即可完成部署。