Node.js 在 Windows Server 上的離線部署方案詳解
Node.js 在 Windows Server 上的離線部署方案
離線部署的核心是提前準(zhǔn)備所有依賴資源(避免在線下載),并通過本地配置完成服務(wù)搭建,整體分為「依賴準(zhǔn)備」「環(huán)境配置」「項(xiàng)目部署」「服務(wù)注冊」4個(gè)階段。
一、提前準(zhǔn)備離線資源(關(guān)鍵:在有網(wǎng)機(jī)器操作)
需準(zhǔn)備 3 類核心資源,確保無網(wǎng)環(huán)境下可完整安裝:
| 資源類型 | 獲取方式 | 注意事項(xiàng) |
|---|---|---|
| Node.js 離線安裝包 | 1. 訪問 Node.js 官網(wǎng) 2. 選擇對應(yīng)版本(建議 LTS 版,如 20.x) 3. 下載 Windows 離線包( msi 或 zip,優(yōu)先 msi 自動配置環(huán)境變量) | 確認(rèn) Windows Server 系統(tǒng)架構(gòu)(32/64 位),下載對應(yīng)版本。 |
| 項(xiàng)目依賴包(node_modules) | 1. 在有網(wǎng)機(jī)器上,拷貝項(xiàng)目源碼到本地 2. 執(zhí)行 npm install --production(只裝生產(chǎn)依賴,減小體積)3. 壓縮生成的 node_modules 文件夾 | 確保有網(wǎng)機(jī)器與 Windows Server 系統(tǒng)架構(gòu)一致(避免依賴編譯后不兼容,如 node-gyp 相關(guān)包)。 |
| 可選:編譯依賴環(huán)境 | 若項(xiàng)目依賴需編譯(如 sqlite3 bcrypt),需提前下載:1. Python 離線安裝包 2. Visual Studio Build Tools 離線包 | 離線安裝時(shí),需先裝 Python + Build Tools,再解壓 node_modules(或執(zhí)行本地依賴安裝)。 |
二、Windows Server 環(huán)境配置(無網(wǎng)機(jī)器操作)
1. 安裝 Node.js 環(huán)境
- 將下載的 Node.js
msi包拷貝到 Windows Server,雙擊運(yùn)行安裝; - 安裝向?qū)е校催x「Add to PATH」(自動配置環(huán)境變量,無需手動改),其余默認(rèn)下一步;
- 驗(yàn)證安裝:打開「命令提示符(CMD)」,執(zhí)行以下命令,顯示版本即成功:
node -v # 如 v20.11.0 npm -v # 如 10.2.4
- 若用
zip包:解壓到指定目錄(如D:\Node.js),手動添加D:\Node.js和D:\Node.js\node_global到「系統(tǒng)環(huán)境變量-PATH」,再驗(yàn)證版本。
- 若用
2. 配置項(xiàng)目目錄
- 在 Windows Server 上創(chuàng)建項(xiàng)目目錄(如
D:\NodeProjects\your-app); - 拷貝以下文件到該目錄:
- 項(xiàng)目源碼(
app.js/server.js入口文件、package.json、配置文件等); - 提前壓縮的
node_modules文件夾,解壓到項(xiàng)目根目錄(與package.json同級)。
- 項(xiàng)目源碼(
三、項(xiàng)目部署與測試
1. 本地啟動測試(驗(yàn)證項(xiàng)目可運(yùn)行)
- 打開 CMD,進(jìn)入項(xiàng)目目錄:
cd D:\NodeProjects\your-app
- 執(zhí)行啟動命令(根據(jù)項(xiàng)目入口文件調(diào)整,如
app.js):node app.js
- 驗(yàn)證服務(wù):
- 本地驗(yàn)證:在 Server 上打開瀏覽器,訪問
http://localhost:端口號(如http://localhost:3000),若返回正常頁面/API 結(jié)果,說明項(xiàng)目可運(yùn)行; - 局域網(wǎng)驗(yàn)證:在同一局域網(wǎng)機(jī)器上,訪問
http://Windows Server IP:端口號(如http://192.168.1.100:3000),確保端口未被防火墻攔截(需開放端口,見下文「故障排查」)。
- 本地驗(yàn)證:在 Server 上打開瀏覽器,訪問
2. 解決端口占用問題(可選)
若啟動時(shí)報(bào)「端口被占用」,執(zhí)行以下命令排查并釋放:
- 查看端口占用情況(以端口 3000 為例):
netstat -ano | findstr ":3000"
- 找到 PID(最后一列數(shù)字),結(jié)束對應(yīng)進(jìn)程:
taskkill /F /PID 1234 # 1234 替換為實(shí)際 PID
四、注冊 Windows 服務(wù)(實(shí)現(xiàn)后臺運(yùn)行+開機(jī)自啟)
直接用 node app.js 啟動后,關(guān)閉 CMD 服務(wù)會停止,需將 Node 項(xiàng)目注冊為 Windows 系統(tǒng)服務(wù),推薦用 pm2(輕量且支持 Windows 服務(wù))。
1. 離線安裝 pm2(提前在有網(wǎng)機(jī)器準(zhǔn)備)
- 在有網(wǎng)機(jī)器上,執(zhí)行
npm install pm2 -g(全局安裝 pm2); - 找到 pm2 安裝目錄(默認(rèn)路徑:
C:\Users\用戶名\AppData\Roaming\npm\node_modules\pm2); - 將
pm2文件夾壓縮,拷貝到 Windows Server 的 Node 全局模塊目錄(默認(rèn):C:\Users\用戶名\AppData\Roaming\npm\node_modules\),解壓覆蓋。
2. 用 pm2 管理 Node 服務(wù)
- 進(jìn)入項(xiàng)目目錄,執(zhí)行啟動命令(指定入口文件,如
app.js):pm2 start app.js --name "your-app-name" # --name 自定義服務(wù)名,方便管理
- 驗(yàn)證 pm2 服務(wù)狀態(tài):
pm2 list # 查看服務(wù)列表,狀態(tài)為 "online" 即正常
3. 注冊為 Windows 系統(tǒng)服務(wù)(開機(jī)自啟)
- 執(zhí)行 pm2 服務(wù)安裝命令:
pm2-service-install # 彈出提示,直接按 Enter 確認(rèn)(默認(rèn)服務(wù)名 PM2)
- 驗(yàn)證系統(tǒng)服務(wù):
- 打開「控制面板 → 管理工具 → 服務(wù)」;
- 找到「PM2」服務(wù),確認(rèn)「啟動類型」為「自動」,「狀態(tài)」為「正在運(yùn)行」。
五、部署驗(yàn)證與故障排查
1. 最終驗(yàn)證
- 重啟 Windows Server,檢查「PM2」服務(wù)是否自動啟動;
- 訪問
http://Server IP:端口號,確認(rèn)項(xiàng)目正常響應(yīng)。
2. 常見問題解決
| 問題現(xiàn)象 | 排查方向 |
|---|---|
| 服務(wù)啟動后無法訪問 | 1. 檢查端口是否開放(Windows 防火墻 → 高級設(shè)置 → 入站規(guī)則,添加端口允許) 2. 確認(rèn)項(xiàng)目監(jiān)聽地址不是 127.0.0.1(需改為 0.0.0.0,允許外部訪問)。 |
| 依賴報(bào)錯(cuò)(如 “module not found”) | 1. 檢查 node_modules 是否完整(對比有網(wǎng)機(jī)器的文件夾大?。?br />2. 若依賴需編譯,確認(rèn)已安裝 Python + Build Tools。 |
| PM2 服務(wù)啟動失敗 | 1. 查看 PM2 日志:pm2 logs2. 檢查 Windows 事件查看器(「Windows 日志 → 應(yīng)用程序」),定位錯(cuò)誤原因。 |
總結(jié)
離線部署的關(guān)鍵是提前規(guī)避“在線依賴”:所有 Node 環(huán)境、項(xiàng)目依賴、工具(如 pm2)都需在有網(wǎng)環(huán)境打包,再拷貝到 Windows Server;通過 pm2 注冊系統(tǒng)服務(wù),確保服務(wù)穩(wěn)定運(yùn)行且開機(jī)自啟,最后驗(yàn)證端口和依賴兼容性即可完成部署。
到此這篇關(guān)于Node.js 在 Windows Server 上的離線部署方案詳解的文章就介紹到這了,更多相關(guān)Node.js 離線部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
了不起的node.js讀書筆記之node的學(xué)習(xí)總結(jié)
這篇文章主要介紹了了不起的node.js讀書筆記之node的學(xué)習(xí)總結(jié),需要的朋友可以參考下2014-12-12
淺談node如何優(yōu)雅地獲取mac系統(tǒng)版本
這篇文章主要和大家聊聊node如何優(yōu)雅地獲取mac系統(tǒng)版本,文中有詳細(xì)的代碼示例和流程步驟,對我們學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-06-06
NodeJS?GRPC?多個(gè)?.proto?文件的處理步驟
本文教程詳細(xì)介紹了在NodeJS環(huán)境中如何使用gRPC框架處理多個(gè).proto文件,步驟包括安裝依賴、定義.proto文件、生成gRPC代碼、實(shí)現(xiàn)服務(wù)器和客戶端以及運(yùn)行,適用于開發(fā)者在構(gòu)建分布式應(yīng)用時(shí)進(jìn)行接口定義和服務(wù)實(shí)現(xiàn)2024-10-10
如何設(shè)置process.env.NODE_ENV生產(chǎn)環(huán)境模式
process.env.NODE_ENV默認(rèn)只有兩種狀態(tài)即development和production,本文主要介紹了process.env.NODE_ENV設(shè)置生產(chǎn)環(huán)境模式,感興趣的可以了解一下2021-09-09
淺談express 中間件機(jī)制及實(shí)現(xiàn)原理
本篇文章主要介紹了淺談express 中間件機(jī)制及實(shí)現(xiàn)原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08
Node.js開發(fā)教程之基于OnceIO框架實(shí)現(xiàn)文件上傳和驗(yàn)證功能
這篇文章主要介紹了Node.js開發(fā)教程之基于OnceIO框架實(shí)現(xiàn)文件上傳和驗(yàn)證的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11
整理 node-sass 安裝失敗的原因及解決辦法(小結(jié))
這篇文章主要介紹了整理 node-sass 安裝失敗的原因及解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02

