# ============================================================================= # 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 ""