142 lines
4.9 KiB
Bash
142 lines
4.9 KiB
Bash
#!/bin/bash
|
||
set -e
|
||
|
||
echo "🚀 NetGescon Linux Setup Script"
|
||
echo "================================="
|
||
|
||
# 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"; }
|
||
|
||
# Verifica se eseguito come utente normale
|
||
if [[ $EUID -eq 0 ]]; then
|
||
log_error "Non eseguire questo script come root. Usa il tuo utente normale."
|
||
exit 1
|
||
fi
|
||
|
||
log_step "1/10 Aggiornamento sistema..."
|
||
sudo apt update && sudo apt upgrade -y
|
||
|
||
log_step "2/10 Installazione pacchetti base..."
|
||
sudo apt install -y curl wget git unzip vim htop tree net-tools openssh-server ufw software-properties-common
|
||
|
||
log_step "3/10 Configurazione firewall..."
|
||
sudo ufw --force enable
|
||
sudo ufw allow ssh
|
||
sudo ufw allow 80
|
||
sudo ufw allow 443
|
||
sudo ufw allow 8000
|
||
log_info "Firewall configurato: SSH, HTTP, HTTPS, Laravel dev server"
|
||
|
||
log_step "4/10 Installazione PHP 8.2..."
|
||
sudo add-apt-repository ppa:ondrej/php -y
|
||
sudo apt update
|
||
sudo apt install -y php8.2 php8.2-fpm php8.2-cli php8.2-common php8.2-mysql \
|
||
php8.2-zip php8.2-gd php8.2-mbstring php8.2-curl php8.2-xml php8.2-bcmath \
|
||
php8.2-intl php8.2-sqlite3 php8.2-redis php8.2-imagick
|
||
|
||
# Verifica installazione PHP
|
||
PHP_VERSION=$(php -v | head -n1 | cut -d' ' -f2)
|
||
log_info "PHP installato: versione $PHP_VERSION"
|
||
|
||
log_step "5/10 Installazione Composer..."
|
||
cd /tmp
|
||
curl -sS https://getcomposer.org/installer | php
|
||
sudo mv composer.phar /usr/local/bin/composer
|
||
sudo chmod +x /usr/local/bin/composer
|
||
|
||
# Verifica Composer
|
||
COMPOSER_VERSION=$(composer --version | cut -d' ' -f3)
|
||
log_info "Composer installato: versione $COMPOSER_VERSION"
|
||
|
||
log_step "6/10 Installazione Node.js..."
|
||
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
||
sudo apt install -y nodejs
|
||
|
||
# Verifica Node.js
|
||
NODE_VERSION=$(node --version)
|
||
NPM_VERSION=$(npm --version)
|
||
log_info "Node.js installato: $NODE_VERSION, npm: $NPM_VERSION"
|
||
|
||
log_step "7/10 Installazione MySQL..."
|
||
sudo apt install -y mysql-server
|
||
|
||
log_step "8/10 Installazione Nginx..."
|
||
sudo apt install -y nginx
|
||
sudo systemctl start nginx
|
||
sudo systemctl enable nginx
|
||
|
||
log_step "9/10 Creazione directory progetto..."
|
||
sudo mkdir -p /var/www/netgescon
|
||
sudo chown -R $USER:www-data /var/www/netgescon
|
||
sudo chmod -R 755 /var/www/netgescon
|
||
|
||
log_step "10/10 Configurazione iniziale completata!"
|
||
|
||
# Salva informazioni di sistema
|
||
echo "=== NetGescon Setup Info ===" > ~/netgescon-setup-info.txt
|
||
echo "Data installazione: $(date)" >> ~/netgescon-setup-info.txt
|
||
echo "Sistema: $(lsb_release -d | cut -f2)" >> ~/netgescon-setup-info.txt
|
||
echo "PHP: $PHP_VERSION" >> ~/netgescon-setup-info.txt
|
||
echo "Composer: $COMPOSER_VERSION" >> ~/netgescon-setup-info.txt
|
||
echo "Node.js: $NODE_VERSION" >> ~/netgescon-setup-info.txt
|
||
echo "NPM: $NPM_VERSION" >> ~/netgescon-setup-info.txt
|
||
echo "MySQL: $(mysql --version)" >> ~/netgescon-setup-info.txt
|
||
echo "Nginx: $(nginx -v 2>&1)" >> ~/netgescon-setup-info.txt
|
||
|
||
log_info "Setup completato! 🎉"
|
||
echo ""
|
||
echo "═══════════════════════════════════════════════════════"
|
||
echo "📋 INFORMAZIONI IMPORTANTE - SALVA QUESTI DATI:"
|
||
echo "═══════════════════════════════════════════════════════"
|
||
echo ""
|
||
echo "🔒 CONFIGURAZIONE DATABASE:"
|
||
echo " Database: netgescon"
|
||
echo " Username: netgescon_user"
|
||
echo " Password: NetGescon2024!"
|
||
echo ""
|
||
echo "📁 DIRECTORY PROGETTO:"
|
||
echo " /var/www/netgescon/"
|
||
echo ""
|
||
echo "🌐 IP MACCHINA:"
|
||
echo " $(hostname -I | awk '{print $1}')"
|
||
echo ""
|
||
echo "═══════════════════════════════════════════════════════"
|
||
echo ""
|
||
echo "🔧 NEXT STEPS OBBLIGATORI:"
|
||
echo ""
|
||
echo "1️⃣ CONFIGURA MYSQL:"
|
||
echo " sudo mysql_secure_installation"
|
||
echo ""
|
||
echo "2️⃣ CREA DATABASE (esegui questi comandi in MySQL):"
|
||
echo " sudo mysql -u root -p"
|
||
echo " CREATE DATABASE netgescon CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
||
echo " CREATE USER 'netgescon_user'@'localhost' IDENTIFIED BY 'NetGescon2024!';"
|
||
echo " GRANT ALL PRIVILEGES ON netgescon.* TO 'netgescon_user'@'localhost';"
|
||
echo " FLUSH PRIVILEGES;"
|
||
echo " EXIT;"
|
||
echo ""
|
||
echo "3️⃣ TRASFERISCI PROGETTO LARAVEL:"
|
||
echo " - Copia netgescon-laravel in /var/www/netgescon/"
|
||
echo " - Esegui script setup-laravel.sh"
|
||
echo ""
|
||
echo "4️⃣ CONFIGURA NGINX:"
|
||
echo " - Crea virtual host"
|
||
echo " - Testa configurazione"
|
||
echo ""
|
||
echo "💾 Info sistema salvate in: ~/netgescon-setup-info.txt"
|
||
echo ""
|
||
|
||
# Salva log installazione
|
||
echo "$(date): NetGescon setup completato" >> ~/netgescon-setup.log
|
||
|
||
log_info "Per continuare, segui la GUIDA-MIGRAZIONE-LINUX-COMPLETA.md"
|