| HANDOFF.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| deploy-templates/README-部署说明.txt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| deploy-templates/backend/install-service.cmd | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| deploy-templates/backend/install-service.ps1 | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/打包部署说明.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| pack-deploy.ps1 | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HANDOFF.md
@@ -43,6 +43,13 @@ - **æªéªè¯é¡¹ï¼éå¨ç®æ æºå䏿¬¡ï¼**ï¼æ¬æºå½å䏿¯ç®¡çåï¼**æ²¡çæ£ install è¿æå¡**ï¼å¼æºèªå¯ã失败éå¯ãæ¥å¿æ»å¨è¦å¨æå¡å¨ä¸æ README 3.1 æ§è¡ä¸æ¬¡ç¡®è®¤ã - **æ°å ï¼æ¬å°ï¼ä¸å ¥åºï¼**ï¼`deploy/traffic-audit-deploy-20261003-3/`ï¼393 æä»¶ / 110.49 MBï¼zip 83.77 MBï¼ãå·²éªè¯ï¼æå¡ä¸ä»¶å¥å¨ `backend\`ãå å `trafficAudit.exe` SHA-256 ä¸åºå®å¼ä¸è´ã`backend\web` ä¸ `frontend/dist` å 44 æä»¶ãjar å»å¯èªæ£éè¿ãæ ææ keyã**æ§ç `traffic-audit-deploy-20261003/` ä¸ `-2/` 已被å代**ï¼é¨ç½²è¯·ç¨ `-3`ï¼æ§å å¾ ç¨æ·ç¡®è®¤ååå ï¼ã - **è¿è¡ç¶æï¼åæ¬æ¡æ¶ï¼**ï¼å¼åç¨å端 8090ï¼PID 43040ï¼ãå端 8080ï¼PID 43152ï¼åå¨è·ï¼æ°æ®åº `127.0.0.1:3305/traffic_audit`ã - **è¡¥å 坿使§ï¼ç¨æ·åé¦âbackend ä¸æä»¶å¤ªå¤ï¼ä¸ç¥éæä¹æä½âï¼**ï¼ - æ°å¢åå»å ¥å£ `deploy-templates/backend/install-service.cmd`ï¼èªå¨ UAC ææ â è° `install-service.ps1`ï¼è¥æ¾ä¸å° `trafficAudit.exe` åæç¤ºâå¿ é¡»æ´ä¸ª backend ä¸èµ·æ·âã - `install-service.ps1` è£ å®ä¼èªå·±æ¢æµç«¯å£ï¼TCP æ¢æµï¼å ¼å®¹ PowerShell 2.0ï¼ï¼æå° OK + æ¬æº/对å¤ç½åï¼èµ·ä¸æ¥æ¶ç´æ¥æå° `logs\*.log` æå 15 è¡ï¼è¥ `application.yml` å£ä»¤ä»åå ä½ç¬¦ï¼æååæä¸æ¬¡éç®æç¤ºã - `README-é¨ç½²è¯´æ.txt` 顶鍿°å¢ãæå¡å¨ä¸åªè¦åè¿ 3 æ¥ã+âåªäºè¦æ·/åªäºä¸ç¨æ·âï¼`docs/æå é¨ç½²è¯´æ.md` ç 5.4 æ¹ä¸ºâå³é® `install-service.cmd` â以管çåè¿è¡âã - ä¸ä¸ª `.cmd` 模æ¿ç»ä¸ä¸º CRLFï¼æ°å¢çä¸¤ä¸ªåæ¥æ¯ LFï¼æ¹å¤çå¨ Windows ä¸åºç¨ CRLFï¼ã - 宿µï¼å¼ºå¶èµ°âå·²ææâåæ¯æ¶ `cmd â install-service.ps1 -Status` é¾è·¯è·éã`%*` ä¼ åæ£å¸¸ï¼`Test-LocalPort` 对 8090 è¿å Trueã对 8099 è¿å Falseã - æ°å ï¼`deploy/traffic-audit-deploy-20261003-4/`ï¼394 æä»¶ / 110.50 MBï¼zip 83.78 MBï¼ââ**å½åææ°å¯ç¨å **ï¼`20261003` / `-2` / `-3` å已被å代ï¼å¾ ç¨æ·ç¡®è®¤åæ¸ çã ## ææ°ï¼2026-10-02ï¼ deploy-templates/README-²¿Êð˵Ã÷.txt
@@ -1,6 +1,21 @@ TrafficAudit 交éè´§è¿ç»è®¡å®¡æ ¸ç³»ç» ââ é¨ç½²å ï¼{stamp}ï¼ ======================================================== ãæå¡å¨ä¸åªè¦åè¿ 3 æ¥ãï¼å ¶å®æä»¶é½ä¸ç¨å¨ï¼ 第 1 æ¥ æ¹é ç½®ï¼ç¨è®°äºæ¬æå¼ backend\application.ymlï¼ææ°æ®åºå°å/è´¦å·/å¯ç ï¼spring.datasource ä¸é¢ä¸é¡¹ï¼å jwt.secret æ¹æè¿å°æå¡å¨ççå®å¼ã 第 2 æ¥ è£ æå¡ï¼è¿å ¥ backend æä»¶å¤¹ï¼å³é® install-service.cmd âã以管çå身份è¿è¡ã ï¼ç´æ¥åå»ä¹è¡ï¼å®ä¼èªå·±å¼¹ç®¡çå确认ï¼ãèæ¬ä¼æ³¨å弿ºèªå¯æå¡å¹¶å¯å¨å®ã 第 3 æ¥ çç»æï¼èæ¬æåä¼æå° OK åç½åï¼æµè§å¨æå¼ http://<æå¡å¨IP>:8090 ï¼è´¦å· admin / admin123ï¼ï¼è½çå°ç»å½é¡µå°±ç®æåã åªäºè¦æ·ãåªäºä¸ç¨æ·ï¼ backend\ å¿ é¡»æ´ä¸ªç®å½ä¸èµ·æ·ï¼jarãapplication.ymlãdocsãwebãæå¡æä»¶é½å¨éé¢ï¼ï¼ ä¸è¦åªæå 个æä»¶æ·ã db\ åªæéè¦åå§å/è¿åæ°æ®åºæ¶æç¨ï¼å¹³æ¶å¯ä¸æ·ã frontend\ ä¸ç¨æ·ï¼å端已å åµå¨ jar éï¼8090 端å£ç´æ¥è®¿é®ï¼ã æ¬æä»¶ 坿·å¯ä¸æ·ï¼å°±æ¯è¿ä»½è¯´æä¹¦ã ãç®å½ç»æã backend/ traffic-audit-server-1.0.0-SNAPSHOT.jar å端ç¨åºï¼å«å ¨é¨ä¾èµï¼**å·²å åµå端**ï¼ @@ -9,7 +24,8 @@ start-backend.cmd / start-backend.sh åå°å¯å¨èæ¬ï¼äººå·¥è°è¯ç¨ï¼å ³äºçªå£å°±åï¼ trafficAudit.exe WinSW æå¡å è£ å¨ï¼æ java åæ Windows æå¡ï¼å¿å å¿æ¹åï¼ trafficAudit.xml WinSW æå¡é ç½®ï¼æå¡å/å¯å¨æ¹å¼/æ¥å¿/失败éå¯çç¥ï¼ install-service.ps1 注å/æ¥ç/éå¯/å é¤ Windows æå¡ï¼å¼æºèªå¯ï¼æ¨èï¼ install-service.cmd åå»å ¥å£ï¼æ³¨å弿ºèªå¯æå¡ï¼ä¼èªå¨è¯·æ±ç®¡çåæéï¼ install-service.ps1 ä¸é¢é£ä¸ª cmd å®é è°ç¨çèæ¬ï¼æ³¨å/æ¥ç/éå¯/å é¤ï¼ start-backend-service.cmd é交äºå¯å¨å¨ï¼æ pauseãå app.logï¼é å计åä»»å¡ç¨ï¼ install-autostart.ps1 å¤éï¼æ³¨åâ计åä»»å¡âæ¹å¼ç弿ºèªå¯ frontend/ @@ -61,15 +77,17 @@ - deepseek.api-key ï¼éè¦ AI åææ¶å¡«ï¼ä¸éè¦å¯ç空 注ï¼application.yml ä¸ jar å级å³çæï¼ä¸ç¨éæ°æå ã 3. å¯å¨å端ï¼å¨ backend ç®å½ä¸ï¼ 3. å¯å¨å端ï¼å¨ backend ç®å½ä¸ï¼è¿æ¥åªæ¯æå·¥è¯è·ï¼å ³çªå£å°±åï¼è¦å¼æºèªå¯è¯·ç 3.1ï¼ Windowsï¼åå» start-backend.cmd Linuxï¼ sh start-backend.sh æåæ å¿ï¼åºç° "Started TrafficAuditApplication" ä¸ "Tomcat started on port(s): 8090" 3.1 Windows 弿ºèªå¯ï¼æ¨èï¼æ³¨åæ Windows æå¡ï¼ä¸æ¬¡é ç½®é¿æçæï¼ åæï¼backend ç®å½ä¸ç trafficAudit.exe / trafficAudit.xml / install-service.ps1 é½å·²éæ¬é¨ç½²å æä¾ï¼ ä¸éè¦å¦å¤ä¸è½½ WinSWï¼ä¹ä¸éè¦ç» java è£ å«çä¸è¥¿ã å¨ backend ç®å½ä¸ï¼ç¨ã管çåãPowerShell æ§è¡ï¼ åæï¼backend ç®å½ä¸ç trafficAudit.exe / trafficAudit.xml / install-service.cmd / install-service.ps1 é½å·²éæ¬é¨ç½²å æä¾ï¼ä¸éè¦å¦å¤ä¸è½½ WinSWï¼ä¹ä¸éè¦ç» java è£ å«çä¸è¥¿ã æçäºï¼å¨ backend ç®å½å³é® install-service.cmd âã以管çå身份è¿è¡ã ï¼ç´æ¥åå»ä¹è¡ï¼å®ä¼èªå·±å¼¹ UAC 管çå确认ï¼ã çä»·çæå·¥æ¹å¼ï¼å¨ backend ç®å½ä¸ï¼ç¨ã管çåãPowerShellï¼ï¼ powershell -NoProfile -ExecutionPolicy Bypass -File install-service.ps1 ææï¼æ³¨å Windows æå¡ TrafficAuditBackendï¼å¼æºèªå¨å¯å¨ï¼å»¶è¿å¯å¨ï¼å ç MySQL 就绪ï¼ï¼ ä¸éè¦ä»»ä½ç¨æ·ç»å½ï¼java è¿ç¨å¼å¸¸éåºç±æå¡ç®¡çå¨èªå¨éå¯ï¼10 ç§ / 30 ç§ / 60 ç§éå¢éè¯ï¼ @@ -82,8 +100,9 @@ -NoStart åªæ³¨åä¸å¯å¨ -JavaPath "D:\jdk8\bin\java.exe" æå¨æå® JDK æ¥å¿ï¼backend\logs\trafficAudit.out.logï¼è¿è¡è¾åºï¼ä¸ trafficAudit.err.logï¼é误è¾åºï¼ï¼ å个æä»¶ 10MBï¼ä¿ç 10 个æ»å¨æä»¶ã éªè¯ï¼æµè§å¨æå¼ http://<é¨ç½²æºIP>:8090 ï¼æ (Invoke-WebRequest http://127.0.0.1:8090 -UseBasicParsing).StatusCode éªè¯ï¼èæ¬è£ å®ä¼èªå¨æ¢æµç«¯å£ï¼æå° OK + æ¬æº/对å¤ç½åï¼èµ·ä¸æ¥æ¶ç´æ¥æå° logs\*.log æå 15 è¡ï¼ ææç¤ºæ¹ application.yml åæ§è¡ install-service.ps1 -Restart å³å¯ãä¹å¯æå·¥ç¨æµè§å¨æå¼ http://<é¨ç½²æºIP>:8090 ç¡®è®¤ã æ³¨æï¼ - 弿ºèªå¯é æå¡çâèªå¨âå¯å¨ç±»åï¼å¦ææå®æ¹æâæå¨âï¼å°±ä¸ä¼åéæºå¨å¯å¨ã - é夿§è¡ install-service.ps1 æ¯å®å ¨çï¼ä¼å åæå¡åéæ°æ³¨åå¹¶å¯å¨ã deploy-templates/backend/install-service.cmd
New file @@ -0,0 +1,49 @@ @echo off rem ============================================================ rem Double-click entry point for a fresh Windows server: rem installs the TrafficAudit backend as a Windows service rem (auto-start at boot) and then verifies it comes up. rem rem It asks for Administrator rights (UAC) and then runs rem install-service.ps1 from this folder. rem rem If double-clicking does nothing, right-click this file and rem choose "Run as administrator". rem rem ASCII-only on purpose: cmd.exe reads this file with the OEM rem code page. rem ============================================================ setlocal cd /d "%~dp0" if not exist "%~dp0trafficAudit.exe" ( echo [ERROR] trafficAudit.exe was not found next to this script. echo Copy the WHOLE backend folder to the server, do not echo pick single files out of it. echo. pause exit /b 1 ) rem S-1-16-12288 = High Mandatory Level, i.e. this window is already elevated. whoami /groups | findstr /C:"S-1-16-12288" >nul 2>&1 if errorlevel 1 ( echo Administrator rights are required. A UAC prompt will appear now. powershell -NoProfile -ExecutionPolicy Bypass -Command "Start-Process -FilePath '%~f0' -Verb RunAs" if errorlevel 1 ( echo. echo [ERROR] Automatic elevation failed. echo Right-click install-service.cmd and choose echo "Run as administrator" instead. echo. pause ) exit /b ) powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0install-service.ps1" %* echo. echo ------------------------------------------------------------ echo Finished. Press any key to close this window. pause >nul deploy-templates/backend/install-service.ps1
@@ -129,6 +129,23 @@ Get-Service -Name $serviceId -ErrorAction SilentlyContinue } function Test-LocalPort { param([int]$Port, [string]$TargetHost = '127.0.0.1') # Probe TCP instead of HTTP: Invoke-WebRequest does not exist on Windows # PowerShell 2 (Windows 7), and this works on every PowerShell version. $client = New-Object System.Net.Sockets.TcpClient try { $async = $client.BeginConnect($TargetHost, $Port, $null, $null) if ($async.AsyncWaitHandle.WaitOne(1000, $false) -and $client.Connected) { return $true } return $false } catch { return $false } finally { $client.Close() } } # ---------- read-only status: no elevation needed ---------- if ($Status) { $service = Get-ServiceState @@ -180,6 +197,7 @@ if (-not (Test-Path $wrapper)) { throw "Missing wrapper executable: $wrapper`nRebuild the deploy package with pack-deploy.ps1 (it provides WinSW), or copy WinSW-x64.exe here renamed to trafficAudit.exe." } $passwordOk = $false if (-not (Test-Path $appConfig)) { Write-Host "WARN: application.yml is missing next to the jar." Write-Host " The built-in password placeholder resolves to an empty string and startup will fail with" @@ -195,6 +213,8 @@ } elseif ($value -match '[^\x00-\x7F]') { Write-Host "WARN: the datasource password contains non-ASCII characters." Write-Host " If it is still the Chinese placeholder text, replace it with the real MySQL password first." } else { $passwordOk = $true } } } @@ -218,18 +238,59 @@ if ($LASTEXITCODE -ne 0) { throw "WinSW install failed with exit code $LASTEXITCODE" } if (-not $NoStart) { Write-Host "Starting service '$serviceId' (delayed auto-start is used at boot)..." Write-Host "Starting service '$serviceId' (auto-start at boot is enabled)..." & $wrapper start Start-Sleep -Seconds 8 Start-Sleep -Seconds 5 $service = Get-ServiceState $service | Select-Object Name, DisplayName, Status, StartType | Format-List $serviceDir = Join-Path $root 'logs' # Read the port from application.yml so the check matches the real config. $port = 8090 if (Test-Path $appConfig) { $portLine = Select-String -LiteralPath $appConfig -Pattern '^\s*port\s*:' | Select-Object -First 1 if ($portLine -and $portLine.Line -match '(\d{2,5})') { $port = [int]$matches[1] } } $ready = $false for ($i = 1; $i -le 30; $i++) { if (Test-LocalPort -Port $port) { $ready = $true; break } Start-Sleep -Seconds 2 $state = Get-ServiceState if ($state -and $state.Status -ne 'Running') { break } } $logDir = Join-Path $root 'logs' Write-Host '' Write-Host "Logs : $serviceDir\trafficAudit.out.log / trafficAudit.err.log" Write-Host "Health check: (Invoke-WebRequest http://127.0.0.1:8090 -UseBasicParsing).StatusCode" if ($ready) { Write-Host "OK : the backend is listening on port $port." Write-Host " On this server : http://127.0.0.1:$port" Write-Host " For other people : http://<server-ip>:$port" } else { Write-Host "WARN: nothing is listening on port $port yet - startup is still running, or it failed." Write-Host " Fix application.yml / MySQL, then run: .\install-service.ps1 -Restart" foreach ($name in @('trafficAudit.err.log', 'trafficAudit.out.log')) { $logFile = Join-Path $logDir $name if (Test-Path -LiteralPath $logFile) { Write-Host '' Write-Host "---- last 15 lines of $name ----" Get-Content -LiteralPath $logFile -Tail 15 -ErrorAction SilentlyContinue | ForEach-Object { Write-Host " $_" } } } } if (-not $passwordOk) { Write-Host '' Write-Host '==============================================================' Write-Host ' IMPORTANT: backend\application.yml still looks unset.' Write-Host ' Put the real MySQL url / username / password in it, then run' Write-Host ' .\install-service.ps1 -Restart' Write-Host '==============================================================' } Write-Host '' Write-Host "Manage it with: Stop-Service $serviceId | Start-Service $serviceId" Write-Host "Or: .\install-service.ps1 -Status | -Restart | -Remove" Write-Host "Logs : $logDir\trafficAudit.out.log / trafficAudit.err.log" Write-Host "Manage: .\install-service.ps1 -Status | -Restart | -Remove" Write-Host " Stop-Service $serviceId | Start-Service $serviceId" Write-Host '' Write-Host 'The service auto-starts on every boot (Automatic, delayed start).' Write-Host 'This service starts automatically on every boot (Automatic + delayed start).' } docs/´ò°ü²¿Êð˵Ã÷.md
@@ -58,7 +58,8 @@ â ââ start-backend.cmd / start-backend.sh å¯å¨èæ¬ï¼äººå·¥åå»/å½ä»¤è¡ï¼ â ââ trafficAudit.exe WinSW æå¡å è£ å¨ï¼2.12.0 x64ï¼èªå å« .NET 6ï¼ â ââ trafficAudit.xml WinSW æå¡é ç½®ï¼èªå¨/å»¶è¿å¯å¨ã失败éå¯ãæ¥å¿æ»å¨ï¼ â ââ install-service.ps1 注å/æ¥ç/éå¯/å é¤ Windows æå¡ï¼å¼æºèªå¯ï¼æ¨èï¼ â ââ install-service.cmd åå»å ¥å£ï¼æ³¨å弿ºèªå¯æå¡ï¼èªå¨è¯·æ±ç®¡çåæéï¼ â ââ install-service.ps1 ä¸é¢é£ä¸ª cmd å®é è°ç¨çèæ¬ï¼æ³¨å/æ¥ç/éå¯/å é¤ï¼ â ââ start-backend-service.cmd å¤éï¼é交äºå¯å¨å¨ï¼æ pauseãå app.logï¼ â ââ install-autostart.ps1 å¤éï¼æ³¨å/æ¥ç/å é¤ Windows 弿ºèªå¯è®¡åä»»å¡ â ââ web/ åç«¯éææä»¶ï¼ç± dist èªå¨åæ¥ï¼8090 åç«¯å£æ¨¡å¼å¿ éï¼ @@ -171,12 +172,14 @@ ### 5.4 Windows 弿ºèªå¯ï¼æ¨èï¼æ³¨åæ Windows æå¡ï¼ å¨ `backend` ç®å½ä¸ç¨**管çå** PowerShell æ§è¡ï¼`trafficAudit.exe` / `trafficAudit.xml` / `install-service.ps1` å·²éå æä¾ï¼ï¼ å¨ `backend` ç®å½é**å³é® `install-service.cmd` âã以管çå身份è¿è¡ã**å³å¯ï¼ç´æ¥åå»ä¹è¡ï¼å®ä¼èªå·±å¼¹ UACï¼ãå®å®é è°ç¨çå°±æ¯åç®å½ç `install-service.ps1`ï¼çä»·å½ä»¤ï¼ ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File install-service.ps1 ``` èæ¬ä¼èªå¨å®ä½ javaãæ³¨åæå¡ãå¯å¨ï¼ç¶åæ¢æµç«¯å£æå°ç»æï¼èµ·ä¸æ¥æ¶ç´æ¥æå° `logs\*.log` çæå 15 è¡ã | 项 | å¼ | |----|----| | æå¡å | `TrafficAuditBackend`ï¼services.msc éæ¾ç¤ºä¸º TrafficAudit Backendï¼ | pack-deploy.ps1
@@ -173,6 +173,7 @@ Copy-Item -LiteralPath $winswSrc (Join-Path $dest 'backend\trafficAudit.exe') -Force Copy-Item (Join-Path $tplDir 'backend\trafficAudit.xml') (Join-Path $dest 'backend') -Force Copy-Item (Join-Path $tplDir 'backend\install-service.ps1') (Join-Path $dest 'backend') -Force Copy-Item (Join-Path $tplDir 'backend\install-service.cmd') (Join-Path $dest 'backend') -Force } Copy-Item $webDist (Join-Path $dest 'frontend') -Recurse -Force Copy-Item (Join-Path $tplDir 'frontend\nginx.conf.example') (Join-Path $dest 'frontend') -Force