mirror of
https://github.com/DeNNiiInc/Website-Stress-Test.git
synced 2026-04-17 12:36:00 +00:00
Optimize for high concurrency: Node.js clustering, Web Workers, and system tuning
This commit is contained in:
@@ -1,73 +1,73 @@
|
||||
# start-deployment.ps1
|
||||
# Automates the deployment by reading config, uploading scripts, and executing setup.
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$ConfigPath = "deploy-config.json"
|
||||
|
||||
if (-not (Test-Path $ConfigPath)) {
|
||||
Write-Error "Configuration file '$ConfigPath' not found. Please copy 'deploy-config.example.json' to '$ConfigPath' and fill in your details."
|
||||
}
|
||||
|
||||
$Config = Get-Content $ConfigPath | ConvertFrom-Json
|
||||
|
||||
# Validate Config
|
||||
$Required = @("host", "username", "password", "remotePath", "repoUrl", "githubToken")
|
||||
foreach ($Key in $Required) {
|
||||
if (-not $Config.$Key) {
|
||||
Write-Error "Missing required config key: $Key"
|
||||
}
|
||||
}
|
||||
|
||||
$User = $Config.username
|
||||
$HostName = $Config.host
|
||||
$Pass = $Config.password
|
||||
# Note: Using password directly in script is tricky with standard ssh/scp without key.
|
||||
# We will check if 'sshpass' or 'plink' is available, or guide user to use keys.
|
||||
# Since the user specifically mentioned providing credentials, they might expect us to use them.
|
||||
# The template used 'plink -pw $Pass'. We will stick to that if available, or warn.
|
||||
|
||||
# Check for plink
|
||||
if (Get-Command "plink.exe" -ErrorAction SilentlyContinue) {
|
||||
Write-Host "Using plink for connection..."
|
||||
$UsePlink = $true
|
||||
}
|
||||
else {
|
||||
Write-Warning "plink.exe not found. Falling back to standard scp/ssh. You may be prompted for password multiple times."
|
||||
$UsePlink = $false
|
||||
}
|
||||
|
||||
$RemoteTmp = "/tmp"
|
||||
$SetupScript = "setup-server.sh"
|
||||
$SyncScript = "auto-sync.sh"
|
||||
|
||||
Write-Host "🚀 Starting Deployment to $HostName..."
|
||||
|
||||
# 1. Upload Scripts
|
||||
Write-Host "Uploading scripts..."
|
||||
if ($UsePlink) {
|
||||
echo y | pscp -P 22 -pw $Pass $SetupScript "$User@$HostName`:$RemoteTmp/$SetupScript"
|
||||
echo y | pscp -P 22 -pw $Pass $SyncScript "$User@$HostName`:$RemoteTmp/$SyncScript"
|
||||
}
|
||||
else {
|
||||
scp $SetupScript "$User@$HostName`:$RemoteTmp/$SetupScript"
|
||||
scp $SyncScript "$User@$HostName`:$RemoteTmp/$SyncScript"
|
||||
}
|
||||
|
||||
# 2. Execute Setup
|
||||
Write-Host "Executing setup on remote server..."
|
||||
$AppDir = $Config.remotePath
|
||||
$Repo = $Config.repoUrl
|
||||
$Token = $Config.githubToken
|
||||
|
||||
# Make scripts executable and run setup
|
||||
$RemoteCmd = "chmod +x $RemoteTmp/$SetupScript $RemoteTmp/$SyncScript; $RemoteTmp/$SetupScript '$Repo' '$AppDir' '$Token'; rm $RemoteTmp/$SetupScript"
|
||||
|
||||
if ($UsePlink) {
|
||||
echo y | plink -ssh -P 22 -t -pw $Pass "$User@$HostName" $RemoteCmd
|
||||
}
|
||||
else {
|
||||
ssh -t "$User@$HostName" $RemoteCmd
|
||||
}
|
||||
|
||||
Write-Host "🎉 Deployment command sent!"
|
||||
# start-deployment.ps1
|
||||
# Automates the deployment by reading config, uploading scripts, and executing setup.
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$ConfigPath = "deploy-config.json"
|
||||
|
||||
if (-not (Test-Path $ConfigPath)) {
|
||||
Write-Error "Configuration file '$ConfigPath' not found. Please copy 'deploy-config.example.json' to '$ConfigPath' and fill in your details."
|
||||
}
|
||||
|
||||
$Config = Get-Content $ConfigPath | ConvertFrom-Json
|
||||
|
||||
# Validate Config
|
||||
$Required = @("host", "username", "password", "remotePath", "repoUrl", "githubToken")
|
||||
foreach ($Key in $Required) {
|
||||
if (-not $Config.$Key) {
|
||||
Write-Error "Missing required config key: $Key"
|
||||
}
|
||||
}
|
||||
|
||||
$User = $Config.username
|
||||
$HostName = $Config.host
|
||||
$Pass = $Config.password
|
||||
# Note: Using password directly in script is tricky with standard ssh/scp without key.
|
||||
# We will check if 'sshpass' or 'plink' is available, or guide user to use keys.
|
||||
# Since the user specifically mentioned providing credentials, they might expect us to use them.
|
||||
# The template used 'plink -pw $Pass'. We will stick to that if available, or warn.
|
||||
|
||||
# Check for plink
|
||||
if (Get-Command "plink.exe" -ErrorAction SilentlyContinue) {
|
||||
Write-Host "Using plink for connection..."
|
||||
$UsePlink = $true
|
||||
}
|
||||
else {
|
||||
Write-Warning "plink.exe not found. Falling back to standard scp/ssh. You may be prompted for password multiple times."
|
||||
$UsePlink = $false
|
||||
}
|
||||
|
||||
$RemoteTmp = "/tmp"
|
||||
$SetupScript = "setup-server.sh"
|
||||
$SyncScript = "auto-sync.sh"
|
||||
|
||||
Write-Host "🚀 Starting Deployment to $HostName..."
|
||||
|
||||
# 1. Upload Scripts
|
||||
Write-Host "Uploading scripts..."
|
||||
if ($UsePlink) {
|
||||
echo y | pscp -P 22 -pw $Pass $SetupScript "$User@$HostName`:$RemoteTmp/$SetupScript"
|
||||
echo y | pscp -P 22 -pw $Pass $SyncScript "$User@$HostName`:$RemoteTmp/$SyncScript"
|
||||
}
|
||||
else {
|
||||
scp $SetupScript "$User@$HostName`:$RemoteTmp/$SetupScript"
|
||||
scp $SyncScript "$User@$HostName`:$RemoteTmp/$SyncScript"
|
||||
}
|
||||
|
||||
# 2. Execute Setup
|
||||
Write-Host "Executing setup on remote server..."
|
||||
$AppDir = $Config.remotePath
|
||||
$Repo = $Config.repoUrl
|
||||
$Token = $Config.githubToken
|
||||
|
||||
# Make scripts executable and run setup
|
||||
$RemoteCmd = "chmod +x $RemoteTmp/$SetupScript $RemoteTmp/$SyncScript; $RemoteTmp/$SetupScript '$Repo' '$AppDir' '$Token'; rm $RemoteTmp/$SetupScript"
|
||||
|
||||
if ($UsePlink) {
|
||||
echo y | plink -ssh -P 22 -t -pw $Pass "$User@$HostName" $RemoteCmd
|
||||
}
|
||||
else {
|
||||
ssh -t "$User@$HostName" $RemoteCmd
|
||||
}
|
||||
|
||||
Write-Host "🎉 Deployment command sent!"
|
||||
|
||||
Reference in New Issue
Block a user