📋 Commit iniziale con: - ✅ Documentazione unificata in docs/ - ✅ Codice Laravel in netgescon-laravel/ - ✅ Script automazione in scripts/ - ✅ Configurazione sync rsync - ✅ Struttura organizzata e pulita 🔄 Versione: 2025.07.19-1644 🎯 Sistema pronto per Git distribuito
183 lines
4.2 KiB
Bash
183 lines
4.2 KiB
Bash
#!/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"
|