從 Windows 到 Linux 服務器的全自動部署教程(免密登錄 + 壓縮 + 上傳 + 啟動)

一、準備工作

1. 環境說明

  • 本地開發環境:Windows 服務器(需執行部署腳本)
  • 目標服務器:Linux 服務器(需安裝?node.jspm2unzip
  • 核心工具7-Zip(壓縮)、OpenSSHscp/ssh?命令)

2. 安裝必要工具

(1)安裝 7-Zip(文件壓縮)
  • 下載地址:7-Zip 官方網站
  • 安裝后將安裝目錄(如?C:\Program Files\7-Zip)添加到系統環境變量?Path
(2)安裝 OpenSSH 客戶端(scp/ssh?命令)
  • 打開?設置 → 應用 → 可選功能 → 添加功能,搜索?OpenSSH 客戶端?并安裝。
  • 驗證:打開 PowerShell,輸入?ssh -V?和?scp -V,顯示版本信息即為成功。
(3)Linux 服務器準備
  • 安裝依賴:

    bash

    # 安裝 Node.js(示例為 Ubuntu,其他系統請適配)
    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    sudo apt install -y nodejs unzip# 安裝 pm2(進程管理工具)
    npm install -g pm2
    

二、配置 SSH 免密登錄(核心步驟)

1. 在 Windows 生成 SSH 密鑰對

  • 打開 PowerShell,執行以下命令(一路回車,無需設置密碼):

    powershell

    ssh-keygen -t rsa
    
  • 生成的密鑰對位于:C:\Users\你的用戶名\.ssh\id_rsa?為私鑰,id_rsa.pub?為公鑰)。

2. 將公鑰上傳到 Linux 服務器

  • 執行以下命令(替換?root?和?47.103.63.55?為你的服務器信息):

    powershell

    # 手動輸入服務器密碼(僅第一次需要)
    ssh root@47.103.63.55 "mkdir -p ~/.ssh && chmod 700 ~/.ssh"
    scp C:\Users\你的用戶名\.ssh\id_rsa.pub root@47.103.63.55:~/.ssh/authorized_keys
    ssh root@47.103.63.55 "chmod 600 ~/.ssh/authorized_keys"
    

3. 驗證免密登錄

  • 執行?ssh root@47.103.63.55,若無需輸入密碼直接登錄,說明配置成功。

三、編寫全自動部署腳本

1. 創建部署腳本

在項目根目錄創建?publish.bat,內容如下:

@echo off
chcp 65001 >nul 2>&1:: 配置參數
set "LINUX_USER=root"        
set "LINUX_IP=47.103.63.55"  
set "LINUX_DIR=/root/testgameserver"  
set "ZIP_NAME=project_package.zip"   :: 顯示當前路徑
set "PROJECT_DIR=%cd%"
echo Using current directory as project path: %PROJECT_DIR%:: 2. 打包項目(排除 node_modules、.git 等無用文件)
:: 注意:需將 7z 路徑添加到系統環境變量,或使用完整路徑(如 "C:\Program Files\7-Zip\7z.exe")
7z a -tzip "%ZIP_NAME%" * -x!node_modules -x!*.log -x!.git -x!*.zip:: 3. Create target directory on Linux server (if not exists)
echo Creating target directory on server...
ssh %LINUX_USER%@%LINUX_IP% "mkdir -p %LINUX_DIR%":: 4. 通過 scp 傳輸打包文件到 Linux 服務器
echo Transferring file to Linux server...
scp "%ZIP_NAME%" %LINUX_USER%@%LINUX_IP%:"%LINUX_DIR%/%ZIP_NAME%":: 5. 通過 ssh 遠程執行 Linux 部署命令
echo Executing remote deployment commands...ssh %LINUX_USER%@%LINUX_IP% "cd %LINUX_DIR% && unzip -o %ZIP_NAME% && rm -f %ZIP_NAME% && npm install && pm2 restart ecosystem.config.cjs && pm2 save && pm2 startup"echo Operation completed!

2. 腳本說明

  • 壓縮階段:排除?node_modules、日志等無用文件,減少傳輸體積。
  • 安全校驗:每個步驟添加錯誤檢查,失敗時終止并提示。
  • 自動化部署:遠程執行解壓、安裝依賴、啟動服務全流程,無需手動干預。

四、執行部署

  1. 將?publish.bat?放在項目根目錄。
  2. 打開 PowerShell,進入項目目錄,執行:

    powershell
    ?

    .\publish.bat

  3. 輸出?Deployment completed successfully!?即為部署成功。

五、驗證部署結果

  1. 登錄 Linux 服務器:

    powershell

    ssh root@47.103.63.55
    
  2. 檢查應用狀態:

    pm2 list  # 查看應用是否運行
    pm2 logs %APP_NAME%  # 查看應用日志(替換為你的 APP_NAME)
    

六、常見問題排查

  1. 免密登錄失敗

    • 檢查 Windows 私鑰權限(id_rsa?僅當前用戶可訪問)。
    • 確認 Linux 服務器?~/.ssh/authorized_keys?內容為 Windows 公鑰(id_rsa.pub)。
  2. 文件傳輸失敗

    • 驗證服務器 IP、端口是否正確,防火墻是否開放 22 端口。
    • 檢查?LINUX_DIR?路徑是否正確,確保有讀寫權限。
  3. 應用啟動失敗

    • 查看日志:pm2 logs %APP_NAME%
    • 確認?src/index.js?是正確的入口文件(根據項目結構修改)。

通過以上步驟,即可實現從代碼壓縮到服務啟動的全自動化部署,適合小型項目快速迭代。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95860.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95860.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95860.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

智能汽車領域研發,復用云原始開發范式?

汽車電子電氣架構演進趨勢:分散的功能ECU -> 域控制器 -> 中央計算服務器汽車電子方案與架構在發展與迭代時會使用虛擬化方法幾種可行的軟硬一體化方案:多ECU,硬件隔離,硬件分區,車規級多核硬件架構 Hypervisor…

數據電臺詢價的詢價要求

技術規格及主要參數 1.電臺基本要求: 1.1 電臺中的信號處理基于FPGA設計,采用FPGAARM高速AD/DA設計架構; 1.2 具備頻譜感知、自主選頻、跳頻、擴頻等功能; 1.3 具備鏈路質量信息、自組網路由信息、電池電壓監測信息、北斗定位信息…

IoT/HCIP實驗-5/基于WIFI的智慧農業實驗(LwM2M/CoAP+PSK+ESP8266 連接到 IoTDA)

文章目錄概述WIFI8266 通信模組WIFI模組也用AT指令?ESP8266 內置協議棧?支持的無線網絡模式MCU通過串口與模組交互Wifi模組做客戶端PC-AT接入路由器向本地TCP服務發數據用代碼接入你家路由器已接入AP(你家Wifi)平臺側開發工程配置和編譯工程…

定時器輸出PWM波配置(呼吸燈)

使用定時器 4 通道 3 生成 PWM 波控制 LED1 ,實現呼吸燈效果。 頻率:2kHz,PSC71,ARR499pwm.c:#include "pwm.h" // 本模塊頭文件:應聲明 pwm_init/pwm_compare_set 等原型、并包含 HAL 頭//(示…

[ai-agent]環境簡介之沙盒e2b vs daytona

所謂的環境的就是agent運行在哪里,或者是agent和那里進行交互。 最常見的環境就是本地開發環境,也就是個人主機,但是存在問題就是沒有辦法出網和橫向擴展。 在沙盒之前也是有其他選擇的: 云服務器, 虛擬機,…

【前端面試題】前端面試知識點(第三十一題到第六十一題)

三十一. CSS實現垂直水平居中 實現元素的垂直水平居中是前端開發中的常見需求,主要有以下幾種思路: text-align + line-height實現單行文本水平垂直居中 適用于單行文本元素,通過text-align: center實現水平居中,line-height等于容器高度實現垂直居中 text-align + vertic…

嵌入式練習項目——————抓包獲取天氣信息

一、內容 嘗試通過實時天氣接口 - 數據接口 - NowAPI此網站獲取天氣信息,實現可以發送城市查詢當前天氣和未來天氣 二、獲取請求報文 可以根據測試示例看到獲取內容,此時數據是cJSON格式,我們首先要通過合適的網址抓包獲取到請求報文&#x…

Python爬蟲實戰:研究NewsCrawl ,構建新浪和網易新聞數據采集系統

1. 引言 1.1 研究背景與意義 在信息時代,新聞作為社會動態、公眾觀點的重要載體,其傳播速度與影響力持續擴大。傳統的人工篩選與采集方式已無法滿足對海量新聞數據的高效處理需求,亟需自動化工具實現大規模、結構化的新聞數據采集。網絡爬蟲技術作為一種按照預設規則自動抓…

PyTorch神經網絡工具箱全解析:nn.Module vs nn.functional

🔍 為何需要神經網絡工具箱? 在僅用 Autograd 和 Tensor 實現模型時,開發者需手動設置參數梯度(requires_gradTrue)、反向傳播(backward())及梯度提取,過程繁瑣且易出錯。nn 工具箱應…

Java注解學習記錄

目錄 一、為什么要學注解? 二、注解是什么? 三、為什么要使用注解? 四、注解的作用 五、注解的分類 5.1 元注解 Retention(/ r??ten?(?)n /) ★★★★★ Target ★★★★★ Inherited(/ ?n?her?t?d /…

43.安卓逆向2-補環境-使用unidbg(使用Smali語法調用方法和使用方法地址調用方法)

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動! 內容參考于:圖靈Python學院 工具下載: 鏈接:https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取碼&#xff1…

【Kubernetes知識點問答題】Pod 調度

1. 如何將特定 Pod 調度到指定的節點?可以使用下列方法中的任何一種來選擇 K8s 對特定 Pod 的調度:① 與節點標簽匹配的 nodeSelector:在 Pod 的規范中使用 nodeSelector 字段來指定節點標簽,以便將 Pod 調度到具有特定標簽的節點…

wordpress顯示時間日期的幾種常見的方式

在WordPress中,顯示時間日期有多種常見方式,包括使用默認設置、模板標簽、插件等,以下是詳細介紹: 使用默認設置 WordPress的默認設置允許你在文章列表中顯示文章的發布時間。登錄到WordPress后臺,在“設置”中找到“…

基于飛算JavaAI實現布隆過濾器防止緩存穿透:原理、實踐與全流程解析

引言:當緩存失效時,系統如何避免“雪崩式崩潰”? 在互聯網高并發場景中(如電商秒殺、社交平臺熱點新聞),緩存是提升系統性能的核心手段——將頻繁訪問的數據(如商品詳情、用戶信息)存…

DeepResearch開源與閉源方案對比

在這個AI不再只是聊天工具的時代,"深度研究"已經成為大語言模型(LLM)的一項新能力。先進的LLM不再只是給出快速的一次性回答,而是可以像研究助手一樣工作——搜索網上信息,調用各種工具(比如搜索…

UniApp 頁面傳參方式詳解

在 UniApp 開發中,頁面間參數傳遞是核心功能之一。以下是 8 種常用的傳參方式,每種方式都有其適用場景和特點:一、URL 拼接傳參(最常用) 適用場景:簡單數據傳遞,如 ID、狀態值等基礎類型數據 實…

音頻分類標注工具

pyqt 分類標注工具:import glob import sys import json import os from PyQt5.QtWidgets import (QApplication, QMainWindow, QTableWidget, QTableWidgetItem,QSplitter, QVBoxLayout, QWidget, QPushButton, QRadioButton,QButtonGroup, QLabel, QHBoxLayout, Q…

云計算-Kubernetes+Istio 實現金絲雀發布:流量管理、熔斷、流量鏡像、ingreess、污點及pv案例實戰

介紹 在微服務架構中,如何安全、高效地實現服務發布與流量管理是保障業務穩定性的核心挑戰。金絲雀發布(Canary Release)、灰度發布等策略通過精細化的流量控制,可有效降低新版本上線風險, Istio 作為主流的服務網格(Service Mesh)工具。 此次Istio 在 Kubernetes 集群…

12.web api 3

定時器-間歇函數

ComfyUI進階:EchoMimic插件全解析,讓靜態肖像實現音頻驅動的精準口型動畫

在數字內容創作中,讓靜態肖像“開口說話”并做出自然表情,是提升交互感與沉浸感的關鍵。傳統動畫制作需專業人員逐幀調整口型與表情,成本高且效率低。ComfyUI的EchoMimic插件通過音頻驅動技術,實現了“輸入音頻→自動生成匹配口型…