172 lines
5.6 KiB
Bash
172 lines
5.6 KiB
Bash
#!/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"
|