#!/bin/bash # Script di setup completo ambiente di sviluppo Netgescon # Uso: ./setup-complete-environment.sh echo "🏗️ SETUP COMPLETO AMBIENTE NETGESCON" echo "====================================" # Colori per output GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' 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" } echo "" log_info "1️⃣ Verifica prerequisiti..." # Verifica MySQL if ! command -v mysql &> /dev/null; then log_error "MySQL non trovato. Installazione richiesta." exit 1 else log_info "MySQL OK" fi # Verifica PHP if ! command -v php &> /dev/null; then log_error "PHP non trovato. Installazione richiesta." exit 1 else log_info "PHP versione: $(php -v | head -n 1)" fi # Verifica Composer if ! command -v composer &> /dev/null; then log_error "Composer non trovato. Installazione richiesta." exit 1 else log_info "Composer OK" fi echo "" log_info "2️⃣ Controllo permessi directory..." PROJECT_DIR="/var/www/netgescon" if [ -d "$PROJECT_DIR" ]; then log_info "Directory progetto trovata: $PROJECT_DIR" # Imposta permessi corretti sudo chown -R $USER:www-data $PROJECT_DIR sudo chmod -R 775 $PROJECT_DIR/storage sudo chmod -R 775 $PROJECT_DIR/bootstrap/cache log_info "Permessi aggiornati" else log_error "Directory progetto non trovata: $PROJECT_DIR" exit 1 fi echo "" log_info "3️⃣ Installazione/aggiornamento dipendenze..." cd $PROJECT_DIR # Composer install if [ -f "composer.json" ]; then composer install --no-dev --optimize-autoloader log_info "Dipendenze Composer installate" else log_warn "composer.json non trovato" fi # NPM install (se presente) if [ -f "package.json" ]; then if command -v npm &> /dev/null; then npm install npm run build log_info "Dipendenze NPM installate e build completato" else log_warn "NPM non trovato, skip installazione frontend" fi fi echo "" log_info "4️⃣ Configurazione ambiente..." # Copia .env se non esiste if [ ! -f ".env" ] && [ -f ".env.example" ]; then cp .env.example .env log_info "File .env creato da .env.example" fi # Genera chiave applicazione se necessario if grep -q "APP_KEY=$" .env 2>/dev/null; then php artisan key:generate log_info "Chiave applicazione generata" fi echo "" log_info "5️⃣ Configurazione database..." # Test connessione database if php artisan migrate:status &> /dev/null; then log_info "Connessione database OK" # Esegui migration php artisan migrate --force log_info "Migration eseguite" # Seed (opzionale) if [ -f "database/seeders/DatabaseSeeder.php" ]; then php artisan db:seed --force log_info "Seeder eseguiti" fi else log_error "Connessione database fallita. Controlla configurazione .env" fi echo "" log_info "6️⃣ Ottimizzazione Laravel..." # Clear cache php artisan config:clear php artisan cache:clear php artisan route:clear php artisan view:clear # Optimization per produzione php artisan config:cache php artisan route:cache php artisan view:cache log_info "Cache ottimizzata" echo "" log_info "7️⃣ Configurazione servizi..." # Configurazione Apache/Nginx se richiesto if command -v apache2 &> /dev/null; then log_info "Apache rilevato - configurazione disponibile" elif command -v nginx &> /dev/null; then log_info "Nginx rilevato - configurazione disponibile" else log_warn "Nessun web server rilevato" fi echo "" log_info "8️⃣ Test finale sistema..." # Test base dell'applicazione if php artisan about &> /dev/null; then log_info "Applicazione Laravel funzionante" else log_error "Problema con l'applicazione Laravel" fi echo "" log_info "✅ SETUP COMPLETATO!" echo "" echo "📋 RIEPILOGO:" echo "- Progetto: $PROJECT_DIR" echo "- Database: $(php artisan migrate:status | wc -l) migration" echo "- Cache: Ottimizzata" echo "- Permessi: Configurati" echo "" echo "🚀 L'ambiente è pronto per lo sviluppo!" echo "" echo "Comandi utili:" echo "- Avvia server: php artisan serve --host=0.0.0.0 --port=8000" echo "- Coda lavori: php artisan queue:work" echo "- Logs: tail -f storage/logs/laravel.log"