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

