125 lines
5.8 KiB
PowerShell
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 ""
|