mirror of
https://github.com/huge-dream/django-vue3-admin.git
synced 2026-09-22 13:05:16 +00:00
Add comprehensive scripts for managing PIS project services: - start-backend.ps1/.sh: Start Django backend with uvicorn/gunicorn - start-frontend.ps1/.sh: Start Vue frontend dev server - start-celery.ps1/.sh: Start Celery worker and beat - stop-all.ps1/.sh: Stop all services gracefully - stop-celery.ps1/.sh: Stop Celery services only - view-logs.ps1/.sh: View and tail log files - check-status.ps1/.sh: Check service status and ports Cross-platform support: - Windows PowerShell scripts with English output (UTF-8 safe) - Unix/Linux/macOS Bash scripts with Chinese output - WMI queries for PowerShell 5.1 compatibility - Unified Makefile and make.ps1 orchestrators Also add scripts-documentation.md with comprehensive usage guide.
203 lines
6.9 KiB
PowerShell
203 lines
6.9 KiB
PowerShell
# ============================================================
|
|
# PIS Project Startup Script - Windows PowerShell Makefile
|
|
# ============================================================
|
|
# Usage:
|
|
# .\make.ps1 help Show all commands
|
|
# .\make.ps1 dev Start dev environment (frontend + backend + Celery)
|
|
# .\make.ps1 dev-backend Start backend only
|
|
# .\make.ps1 dev-frontend Start frontend only
|
|
# .\make.ps1 dev-celery Start Celery only
|
|
# .\make.ps1 stop Stop all services
|
|
# .\make.ps1 status Check service status
|
|
# .\make.ps1 logs View all logs
|
|
# .\make.ps1 logs-backend View backend logs
|
|
# .\make.ps1 logs-frontend View frontend logs
|
|
# .\make.ps1 logs-celery View Celery logs
|
|
# .\make.ps1 restart Restart all services
|
|
# .\make.ps1 restart-celery Restart Celery
|
|
# ============================================================
|
|
|
|
param(
|
|
[string]$Target = "help",
|
|
[string]$ENV = "dev"
|
|
)
|
|
|
|
$ErrorActionPreference = "Continue"
|
|
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
$ProjectRoot = $ScriptDir
|
|
$ScriptsDir = Join-Path $ProjectRoot "scripts"
|
|
|
|
# Path configuration
|
|
$PID_DIR = Join-Path $ProjectRoot ".pids"
|
|
$LOG_DIR = Join-Path $ProjectRoot "backend\logs"
|
|
|
|
function Ensure-Directories {
|
|
if (!(Test-Path $PID_DIR)) { New-Item -ItemType Directory -Path $PID_DIR -Force | Out-Null }
|
|
if (!(Test-Path $LOG_DIR)) { New-Item -ItemType Directory -Path $LOG_DIR -Force | Out-Null }
|
|
}
|
|
|
|
function Run-Script {
|
|
param([string]$ScriptName)
|
|
$scriptPath = Join-Path $ScriptsDir "$ScriptName.ps1"
|
|
if (Test-Path $scriptPath) {
|
|
& $scriptPath $ENV
|
|
} else {
|
|
# fallback to bash if ps1 doesn't exist
|
|
$bashPath = Join-Path $ScriptsDir "$ScriptName.sh"
|
|
if (Test-Path $bashPath) {
|
|
bash $bashPath $ENV
|
|
} else {
|
|
Write-Host "[ERROR] Script not found: $ScriptName"
|
|
exit 1
|
|
}
|
|
}
|
|
}
|
|
|
|
switch ($Target.ToLower()) {
|
|
"help" {
|
|
Write-Host ""
|
|
Write-Host "========================================"
|
|
Write-Host " PIS Project Startup Script (ENV=$ENV)"
|
|
Write-Host "========================================"
|
|
Write-Host ""
|
|
Write-Host " Startup Commands:"
|
|
Write-Host " .\make.ps1 dev Start dev environment (frontend+backend+Celery)"
|
|
Write-Host " .\make.ps1 dev-backend Start backend only"
|
|
Write-Host " .\make.ps1 dev-frontend Start frontend only"
|
|
Write-Host " .\make.ps1 dev-celery Start Celery only"
|
|
Write-Host ""
|
|
Write-Host " Stop/Restart:"
|
|
Write-Host " .\make.ps1 stop Stop all services"
|
|
Write-Host " .\make.ps1 restart Restart all services"
|
|
Write-Host " .\make.ps1 restart-celery Restart Celery"
|
|
Write-Host ""
|
|
Write-Host " View Logs:"
|
|
Write-Host " .\make.ps1 logs View all logs"
|
|
Write-Host " .\make.ps1 logs-backend View backend logs"
|
|
Write-Host " .\make.ps1 logs-frontend View frontend logs"
|
|
Write-Host " .\make.ps1 logs-celery View Celery logs"
|
|
Write-Host ""
|
|
Write-Host " Status:"
|
|
Write-Host " .\make.ps1 status Check service status"
|
|
Write-Host ""
|
|
Write-Host " Environment:"
|
|
Write-Host " .\make.ps1 -ENV prod dev Use production environment"
|
|
Write-Host ""
|
|
Write-Host "========================================"
|
|
}
|
|
|
|
"dev" {
|
|
Ensure-Directories
|
|
Write-Host "========================================"
|
|
Write-Host " Starting Dev Environment (ENV=$ENV)"
|
|
Write-Host "========================================"
|
|
Write-Host ""
|
|
Write-Host " Backend: http://localhost:8000"
|
|
Write-Host " Frontend: http://localhost:8080"
|
|
Write-Host " Celery: Worker + Beat"
|
|
Write-Host ""
|
|
Run-Script "start-backend"
|
|
Run-Script "start-frontend"
|
|
Run-Script "start-celery"
|
|
}
|
|
|
|
"dev-backend" {
|
|
Ensure-Directories
|
|
Write-Host "Starting backend service (ENV=$ENV)..."
|
|
Run-Script "start-backend"
|
|
}
|
|
|
|
"dev-frontend" {
|
|
Write-Host "Starting frontend service (ENV=$ENV)..."
|
|
Run-Script "start-frontend"
|
|
}
|
|
|
|
"dev-celery" {
|
|
Ensure-Directories
|
|
Write-Host "Starting Celery (ENV=$ENV)..."
|
|
Run-Script "start-celery"
|
|
}
|
|
|
|
"stop" {
|
|
Write-Host "Stopping all services..."
|
|
Run-Script "stop-all"
|
|
Write-Host "All services stopped"
|
|
}
|
|
|
|
"restart" {
|
|
Write-Host "Restarting all services..."
|
|
Run-Script "stop-all"
|
|
Start-Sleep -Seconds 2
|
|
Ensure-Directories
|
|
Run-Script "start-backend"
|
|
Run-Script "start-frontend"
|
|
Run-Script "start-celery"
|
|
}
|
|
|
|
"restart-celery" {
|
|
Run-Script "stop-celery"
|
|
Start-Sleep -Seconds 1
|
|
Ensure-Directories
|
|
Run-Script "start-celery"
|
|
}
|
|
|
|
"logs" {
|
|
Write-Host "========================================"
|
|
Write-Host " Viewing All Logs (Ctrl+C to exit)"
|
|
Write-Host "========================================"
|
|
Run-Script "view-logs"
|
|
}
|
|
|
|
"logs-backend" {
|
|
Write-Host "========================================"
|
|
Write-Host " Viewing Backend Logs (Ctrl+C to exit)"
|
|
Write-Host "========================================"
|
|
& (Join-Path $ScriptsDir "view-logs.ps1") backend
|
|
}
|
|
|
|
"logs-frontend" {
|
|
Write-Host "========================================"
|
|
Write-Host " Viewing Frontend Logs (Ctrl+C to exit)"
|
|
Write-Host "========================================"
|
|
& (Join-Path $ScriptsDir "view-logs.ps1") frontend
|
|
}
|
|
|
|
"logs-celery" {
|
|
Write-Host "========================================"
|
|
Write-Host " Viewing Celery Logs (Ctrl+C to exit)"
|
|
Write-Host "========================================"
|
|
& (Join-Path $ScriptsDir "view-logs.ps1") celery
|
|
}
|
|
|
|
"status" {
|
|
Write-Host "========================================"
|
|
Write-Host " Service Status Check"
|
|
Write-Host "========================================"
|
|
Run-Script "check-status"
|
|
}
|
|
|
|
"clean-logs" {
|
|
Write-Host "Cleaning log files..."
|
|
if (Test-Path $LOG_DIR) {
|
|
Get-ChildItem $LOG_DIR -Filter "*.log" | Remove-Item -Force -ErrorAction SilentlyContinue
|
|
}
|
|
Write-Host "Logs cleaned"
|
|
}
|
|
|
|
"clean-pids" {
|
|
Write-Host "Cleaning PID files..."
|
|
if (Test-Path $PID_DIR) {
|
|
Get-ChildItem $PID_DIR -Filter "*.pid" | Remove-Item -Force -ErrorAction SilentlyContinue
|
|
}
|
|
Write-Host "PID files cleaned"
|
|
}
|
|
|
|
default {
|
|
Write-Host "[ERROR] Unknown command: $Target"
|
|
Write-Host "Run '.\make.ps1 help' to see available commands"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
exit 0
|