Files
inquiry_robot/deploy/_remote_safe_start_ledger.ps1
T

97 lines
3.5 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 发布并启动新主账 8180(仅 E:\wwwroot\inquiry-new);禁止动现网 8080 / C:\yutongda
$ErrorActionPreference = 'Stop'
$Root = 'E:\wwwroot\inquiry-new'
$Jar = Join-Path $Root 'jeecg-system-start-3.5.3.jar'
$LogDir = Join-Path $Root 'logs'
$IncomingJar = 'C:\Users\ytd_extdev_0903\incoming\jeecg-system-start-3.5.3.jar'
New-Item -ItemType Directory -Force -Path $Root, $LogDir | Out-Null
if (Test-Path $IncomingJar) {
Write-Output "=== replace jar from incoming ==="
Copy-Item $IncomingJar $Jar -Force
}
if (-not (Test-Path $Jar)) { throw "jar missing: $Jar" }
$ji = Get-Item $Jar
Write-Output "jar bytes=$($ji.Length) mtime=$($ji.LastWriteTime)"
# 加载 E:\wwwroot\.env
Get-Content 'E:\wwwroot\.env' | ForEach-Object {
$line = $_.Trim()
if (-not $line -or $line.StartsWith('#')) { return }
$i = $line.IndexOf('=')
if ($i -lt 1) { return }
$k = $line.Substring(0, $i).Trim()
$v = $line.Substring($i + 1).Trim()
if ($v.StartsWith('"') -and $v.EndsWith('"')) { $v = $v.Substring(1, $v.Length - 2) }
[Environment]::SetEnvironmentVariable($k, $v, 'Process')
Set-Item -Path "Env:$k" -Value $v
}
if (-not $env:YTD_REDIS_PASSWORD -and $env:REDIS_URL) {
if ($env:REDIS_URL -match 'redis://:([^@]+)@') {
$env:YTD_REDIS_PASSWORD = $Matches[1]
} elseif ($env:REDIS_URL -match 'redis://[^:]+:([^@]+)@') {
$env:YTD_REDIS_PASSWORD = $Matches[1]
}
}
if (-not $env:YTD_REDIS_HOST) { $env:YTD_REDIS_HOST = '127.0.0.1' }
$env:YTD_REDIS_HOST = '127.0.0.1'
$env:LEDGER_PORT = '8180'
Write-Host "MYSQL_DB=$env:MYSQL_DB MYSQL_HOST=$env:MYSQL_HOST LEDGER_PORT=$env:LEDGER_PORT"
# 只停 inquiry-new 的 8180,绝不碰 yutongda 8080
Get-CimInstance Win32_Process -Filter "Name='java.exe'" | ForEach-Object {
if ($_.CommandLine -and $_.CommandLine -like '*inquiry-new*jeecg-system-start*') {
Write-Host "stop pid=$($_.ProcessId)"
Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue
}
}
Get-NetTCPConnection -LocalPort 8180 -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty OwningProcess -Unique |
ForEach-Object {
$p = Get-CimInstance Win32_Process -Filter "ProcessId=$_"
if ($p -and $p.CommandLine -like '*inquiry-new*') {
Stop-Process -Id $_ -Force -ErrorAction SilentlyContinue
}
}
Start-Sleep -Seconds 2
$Java = 'C:\yutongda\tools\jdk8\bin\java.exe'
if (-not (Test-Path $Java)) { throw "java missing $Java" }
$Out = Join-Path $LogDir 'stdout.log'
$Err = Join-Path $LogDir 'stderr.log'
$arg = @(
'-jar', $Jar,
'--spring.profiles.active=inquiry',
"--server.port=$env:LEDGER_PORT"
)
Write-Host "starting $Java $($arg -join ' ')"
$p = Start-Process -FilePath $Java -ArgumentList $arg -WorkingDirectory $Root -RedirectStandardOutput $Out -RedirectStandardError $Err -PassThru -WindowStyle Hidden
Write-Host "started pid=$($p.Id)"
# 等启动(最长约 90s)
$ok = $false
for ($i = 1; $i -le 18; $i++) {
Start-Sleep -Seconds 5
try {
$r = Invoke-WebRequest -Uri 'http://127.0.0.1:8180/jeecgboot/' -UseBasicParsing -TimeoutSec 5
Write-Host "health try=$i status=$($r.StatusCode)"
$ok = $true
break
} catch {
Write-Host "health try=$i pending"
}
}
if (-not $ok) {
Write-Host '--- stderr tail ---'
if (Test-Path $Err) { Get-Content $Err -Tail 50 }
throw 'ledger 8180 health failed'
}
# 确认现网 8080 仍在
$prod = Get-NetTCPConnection -LocalPort 8080 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1
if (-not $prod) { throw 'CRITICAL: prod 8080 down after start' }
Write-Output 'LEDGER_8180_OK'
Write-Output "PROD_8080_OK pid=$($prod.OwningProcess)"