netgescon-master/_BACKUP_OLD_netgescon-laravel_INACTIVE/setup-complete-environment.sh

183 lines
4.2 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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"