#!/bin/bash # setup-laravel.sh - Da eseguire dopo aver trasferito il progetto set -e # Colori per output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color log_info() { echo -e "${GREEN}[INFO]${NC} $1"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } log_error() { echo -e "${RED}[ERROR]${NC} $1"; } log_step() { echo -e "${BLUE}[STEP]${NC} $1"; } echo "🔧 Setup Laravel NetGescon" echo "===========================" # Verifica se siamo nella directory corretta if [ ! -d "/var/www/netgescon/netgescon-laravel" ]; then log_error "Directory progetto non trovata: /var/www/netgescon/netgescon-laravel" echo "Assicurati di aver trasferito il progetto Laravel nella directory corretta." exit 1 fi cd /var/www/netgescon/netgescon-laravel # Verifica file artisan if [ ! -f "artisan" ]; then log_error "File artisan non trovato. Assicurati di essere nella directory corretta del progetto Laravel." exit 1 fi log_step "1/10 Configurazione permessi..." sudo chown -R $USER:www-data . sudo chmod -R 755 . sudo chmod -R 775 storage bootstrap/cache log_info "Permessi configurati correttamente" log_step "2/10 Installazione dipendenze PHP..." composer install --optimize-autoloader --no-dev log_info "Dipendenze PHP installate" log_step "3/10 Installazione dipendenze Node.js..." if [ -f "package.json" ]; then npm install log_info "Dipendenze Node.js installate" else log_warn "File package.json non trovato, saltato npm install" fi log_step "4/10 Build asset produzione..." if [ -f "package.json" ]; then npm run build log_info "Asset compilati per produzione" else log_warn "Build asset saltato (package.json non trovato)" fi log_step "5/10 Configurazione .env..." if [ ! -f ".env" ]; then cp .env.example .env log_info "File .env creato da .env.example" # Configurazione automatica .env sed -i 's/DB_DATABASE=laravel/DB_DATABASE=netgescon/' .env sed -i 's/DB_USERNAME=root/DB_USERNAME=netgescon_user/' .env sed -i 's/DB_PASSWORD=/DB_PASSWORD=NetGescon2024!/' .env sed -i 's/APP_ENV=local/APP_ENV=production/' .env sed -i 's/APP_DEBUG=true/APP_DEBUG=false/' .env log_info "File .env configurato automaticamente" else log_info "File .env già esistente" fi log_step "6/10 Generazione chiave applicazione..." php artisan key:generate --force log_info "Chiave applicazione generata" log_step "7/10 Test connessione database..." if php artisan tinker --execute="echo \DB::connection()->getPdo() ? 'OK' : 'FAILED';" 2>/dev/null | grep -q "OK"; then log_info "Connessione database OK" else log_error "Connessione database FAILED" echo "Verifica che:" echo "1. MySQL sia in esecuzione: sudo systemctl status mysql" echo "2. Database 'netgescon' sia stato creato" echo "3. Utente 'netgescon_user' esista con privilegi corretti" echo "4. Password nel file .env sia corretta" exit 1 fi log_step "8/10 Esecuzione migrazioni database..." php artisan migrate --force log_info "Migrazioni database completate" log_step "9/10 Esecuzione seeder..." if php artisan db:seed --force 2>/dev/null; then log_info "Seeder eseguiti con successo" else log_warn "Alcuni seeder potrebbero aver avuto problemi (normale se database già popolato)" fi log_step "10/10 Ottimizzazione cache..." php artisan config:cache php artisan route:cache php artisan view:cache php artisan storage:link log_info "Cache ottimizzata e storage link creato" # Verifica finale log_info "Verifica finale installazione..." # Test sintassi Laravel if php artisan --version >/dev/null 2>&1; then LARAVEL_VERSION=$(php artisan --version) log_info "Laravel funzionante: $LARAVEL_VERSION" else log_error "Problemi con Laravel" fi # Test database USER_COUNT=$(php artisan tinker --execute="echo \App\Models\User::count();" 2>/dev/null | tail -1) log_info "Utenti in database: $USER_COUNT" echo "" echo "═══════════════════════════════════════════════════════" echo "✅ SETUP LARAVEL COMPLETATO!" echo "═══════════════════════════════════════════════════════" echo "" echo "🌐 TEST APPLICAZIONE:" echo " php artisan serve --host=0.0.0.0 --port=8000" echo " Vai su: http://$(hostname -I | awk '{print $1}'):8000" echo "" echo "📁 DIRECTORY PROGETTO:" echo " $(pwd)" echo "" echo "🔒 UTENTI DATABASE: $USER_COUNT" echo "" echo "═══════════════════════════════════════════════════════" echo "" echo "🔧 NEXT STEPS:" echo "" echo "1️⃣ TESTA APPLICAZIONE:" echo " php artisan serve --host=0.0.0.0 --port=8000" echo "" echo "2️⃣ CONFIGURA NGINX:" echo " - Crea virtual host (vedi guida completa)" echo " - Configura dominio/IP" echo "" echo "3️⃣ CONFIGURA BACKUP:" echo " - Script backup automatico" echo " - Crontab per backup periodici" echo "" echo "4️⃣ API LEGACY (se necessario):" echo " - Configura bridge per connessione legacy" echo " - Test import/export dati" echo "" # Salva info setup echo "=== Laravel Setup Info ===" >> ~/netgescon-setup-info.txt echo "Data setup Laravel: $(date)" >> ~/netgescon-setup-info.txt echo "Directory progetto: $(pwd)" >> ~/netgescon-setup-info.txt echo "Laravel version: $LARAVEL_VERSION" >> ~/netgescon-setup-info.txt echo "Utenti database: $USER_COUNT" >> ~/netgescon-setup-info.txt echo "" >> ~/netgescon-setup-info.txt log_info "Info setup salvate in: ~/netgescon-setup-info.txt"