webmoney/backend/deploy.ps1

125 lines
5.8 KiB
PowerShell

# =============================================================================
# WEBMoney Backend - Script de Deploy para Windows
# =============================================================================
# Este script sincroniza e deploya o backend Laravel para o servidor
# Uso: .\deploy.ps1
# =============================================================================
# Configurações
$SERVER_USER = "root"
$SERVER_HOST = "213.165.93.60"
$SERVER_PATH = "/var/www/webmoney/backend"
$LOCAL_PATH = $PSScriptRoot
# Cores
function Write-Color {
param([string]$Text, [string]$Color = "White")
Write-Host $Text -ForegroundColor $Color
}
Write-Color "╔═══════════════════════════════════════════════════════╗" "Green"
Write-Color "║ WEBMoney Laravel - Deploy para Produção ║" "Green"
Write-Color "╚═══════════════════════════════════════════════════════╝" "Green"
Write-Host ""
# 1. Build local (se necessário)
Write-Color "[1/8] Verificando dependências locais..." "Yellow"
if (-not (Test-Path "$LOCAL_PATH\vendor")) {
Write-Host "Instalando dependências do Composer..."
composer install --no-dev --optimize-autoloader
}
Write-Color "✓ Dependências locais OK" "Green"
# 2. Preparar lista de exclusões
$excludes = @(
".git",
"node_modules",
"storage/logs/*",
"storage/framework/cache/*",
"storage/framework/sessions/*",
"storage/framework/views/*",
".env",
"database/database.sqlite"
)
# 3. Sincronizar arquivos via scp (alternativa a rsync)
Write-Color "[2/8] Sincronizando arquivos para o servidor..." "Yellow"
# Criar arquivo tar local excluindo pastas
$tarFile = "$env:TEMP\webmoney-backend.tar.gz"
$excludeArgs = ($excludes | ForEach-Object { "--exclude='$_'" }) -join " "
# Usar tar se disponível, sino scp directo
$tarAvailable = Get-Command tar -ErrorAction SilentlyContinue
if ($tarAvailable) {
Push-Location $LOCAL_PATH
tar -czf $tarFile --exclude='.git' --exclude='node_modules' --exclude='storage/logs/*' --exclude='storage/framework/cache/*' --exclude='storage/framework/sessions/*' --exclude='storage/framework/views/*' --exclude='.env' --exclude='vendor' .
Pop-Location
# Enviar tar al servidor
scp $tarFile "${SERVER_USER}@${SERVER_HOST}:/tmp/webmoney-backend.tar.gz"
# Extraer en el servidor
ssh "$SERVER_USER@$SERVER_HOST" "cd $SERVER_PATH && tar -xzf /tmp/webmoney-backend.tar.gz && rm /tmp/webmoney-backend.tar.gz"
Remove-Item $tarFile -ErrorAction SilentlyContinue
} else {
# Copiar archivos directamente (más lento pero funciona)
Write-Host "Usando SCP directo (tar no disponible)..."
scp -r "$LOCAL_PATH\app" "${SERVER_USER}@${SERVER_HOST}:${SERVER_PATH}/"
scp -r "$LOCAL_PATH\bootstrap" "${SERVER_USER}@${SERVER_HOST}:${SERVER_PATH}/"
scp -r "$LOCAL_PATH\config" "${SERVER_USER}@${SERVER_HOST}:${SERVER_PATH}/"
scp -r "$LOCAL_PATH\database" "${SERVER_USER}@${SERVER_HOST}:${SERVER_PATH}/"
scp -r "$LOCAL_PATH\public" "${SERVER_USER}@${SERVER_HOST}:${SERVER_PATH}/"
scp -r "$LOCAL_PATH\resources" "${SERVER_USER}@${SERVER_HOST}:${SERVER_PATH}/"
scp -r "$LOCAL_PATH\routes" "${SERVER_USER}@${SERVER_HOST}:${SERVER_PATH}/"
scp "$LOCAL_PATH\artisan" "${SERVER_USER}@${SERVER_HOST}:${SERVER_PATH}/"
scp "$LOCAL_PATH\composer.json" "${SERVER_USER}@${SERVER_HOST}:${SERVER_PATH}/"
scp "$LOCAL_PATH\composer.lock" "${SERVER_USER}@${SERVER_HOST}:${SERVER_PATH}/"
}
Write-Color "✓ Arquivos sincronizados" "Green"
# 4. Copiar .env de produção
Write-Color "[3/8] Configurando .env de produção..." "Yellow"
ssh "$SERVER_USER@$SERVER_HOST" "cp $SERVER_PATH/.env.production $SERVER_PATH/.env 2>/dev/null || true"
Write-Color "✓ .env configurado" "Green"
# 5. Instalar dependências no servidor
Write-Color "[4/8] Instalando dependências no servidor..." "Yellow"
ssh "$SERVER_USER@$SERVER_HOST" "cd $SERVER_PATH && composer install --no-dev --optimize-autoloader"
Write-Color "✓ Dependências instaladas" "Green"
# 6. Ajustar permissões
Write-Color "[5/8] Ajustando permissões..." "Yellow"
ssh "$SERVER_USER@$SERVER_HOST" "chown -R www-data:www-data $SERVER_PATH/storage $SERVER_PATH/bootstrap/cache"
ssh "$SERVER_USER@$SERVER_HOST" "chmod -R 775 $SERVER_PATH/storage $SERVER_PATH/bootstrap/cache"
Write-Color "✓ Permissões ajustadas" "Green"
# 7. Executar migrações
Write-Color "[6/8] Executando migrações de banco de dados..." "Yellow"
ssh "$SERVER_USER@$SERVER_HOST" "cd $SERVER_PATH && php artisan migrate --force"
Write-Color "✓ Migrações executadas" "Green"
# 8. Cache e otimizações
Write-Color "[7/8] Otimizando aplicação..." "Yellow"
ssh "$SERVER_USER@$SERVER_HOST" "cd $SERVER_PATH && php artisan config:cache"
ssh "$SERVER_USER@$SERVER_HOST" "cd $SERVER_PATH && php artisan route:cache"
ssh "$SERVER_USER@$SERVER_HOST" "cd $SERVER_PATH && php artisan view:cache"
Write-Color "✓ Caches gerados" "Green"
# 9. Reiniciar PHP-FPM
Write-Color "[8/8] Reiniciando serviços..." "Yellow"
ssh "$SERVER_USER@$SERVER_HOST" "systemctl restart php8.4-fpm"
Write-Color "✓ PHP-FPM reiniciado" "Green"
Write-Host ""
Write-Color "╔═══════════════════════════════════════════════════════╗" "Green"
Write-Color "║ ✓ Deploy concluído com sucesso! ║" "Green"
Write-Color "╚═══════════════════════════════════════════════════════╝" "Green"
Write-Host ""
Write-Host "API disponível em: " -NoNewline
Write-Color "https://webmoney.cnxifly.com/api" "Cyan"
Write-Host ""