netgescon-master/scripts/setup-netgescon-ubuntu2404.sh

203 lines
6.9 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
# setup-netgescon-ubuntu2404.sh - Setup ottimizzato per Ubuntu 24.04 LTS
set -e
echo "🚀 NetGescon Setup Script - Ubuntu 24.04 LTS"
echo "=============================================="
# Colori per output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
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 versione Ubuntu
if ! grep -q "24.04" /etc/os-release; then
log_error "Questo script è ottimizzato per Ubuntu 24.04 LTS"
exit 1
fi
log_step "1/12 Aggiornamento sistema Ubuntu 24.04..."
sudo apt update && sudo apt upgrade -y
log_step "2/12 Installazione pacchetti base..."
sudo apt install -y curl wget git unzip vim htop tree net-tools openssh-server ufw \
software-properties-common apt-transport-https ca-certificates gnupg lsb-release
log_step "3/12 Configurazione firewall UFW..."
sudo ufw --force enable
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8000/tcp
log_info "Firewall configurato per NetGescon"
log_step "4/12 Installazione PHP 8.3 (Ubuntu 24.04 native)..."
sudo apt install -y php8.3 php8.3-fpm php8.3-cli php8.3-common php8.3-mysql \
php8.3-zip php8.3-gd php8.3-mbstring php8.3-curl php8.3-xml php8.3-bcmath \
php8.3-intl php8.3-sqlite3 php8.3-redis php8.3-imagick php8.3-opcache
# Configurazione PHP ottimizzata
sudo tee /etc/php/8.3/fpm/conf.d/99-netgescon.ini > /dev/null <<EOF
; NetGescon PHP Configuration
memory_limit = 512M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_vars = 3000
opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 2
opcache.fast_shutdown = 1
EOF
PHP_VERSION=$(php -v | head -1 | cut -d' ' -f2)
log_info "PHP installato: $PHP_VERSION"
log_step "5/12 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
COMPOSER_VERSION=$(composer --version 2>/dev/null | cut -d' ' -f3)
log_info "Composer installato: $COMPOSER_VERSION"
log_step "6/12 Installazione Node.js 20 LTS..."
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
NODE_VERSION=$(node --version)
NPM_VERSION=$(npm --version)
log_info "Node.js: $NODE_VERSION, npm: $NPM_VERSION"
log_step "7/12 Installazione MySQL 8.0..."
sudo apt install -y mysql-server mysql-client
# Configurazione MySQL ottimizzata per NetGescon
sudo tee /etc/mysql/mysql.conf.d/99-netgescon.cnf > /dev/null <<EOF
[mysqld]
# NetGescon MySQL Configuration
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
max_connections = 200
query_cache_size = 0
query_cache_type = 0
tmp_table_size = 64M
max_heap_table_size = 64M
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
EOF
sudo systemctl restart mysql
log_info "MySQL configurato per NetGescon"
log_step "8/12 Installazione Nginx..."
sudo apt install -y nginx
# Configurazione Nginx base
sudo tee /etc/nginx/conf.d/netgescon-global.conf > /dev/null <<EOF
# NetGescon Global Nginx Configuration
client_max_body_size 64M;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
gzip on;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
EOF
sudo systemctl enable nginx
sudo systemctl start nginx
log_info "Nginx installato e configurato"
log_step "9/12 Installazione Redis (caching)..."
sudo apt install -y redis-server
sudo systemctl enable redis-server
sudo systemctl start redis-server
log_info "Redis installato per caching Laravel"
log_step "10/12 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_info "Directory NetGescon: /var/www/netgescon"
log_step "11/12 Configurazione servizi..."
sudo systemctl enable php8.3-fpm
sudo systemctl start php8.3-fpm
sudo systemctl enable mysql
sudo systemctl enable nginx
log_step "12/12 Installazione strumenti di monitoraggio..."
sudo apt install -y htop iotop netstat-nat
log_info "Strumenti di sistema installati"
# Informazioni di sistema
echo "=== NetGescon Ubuntu 24.04 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 "Kernel: $(uname -r)" >> ~/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
echo "Redis: $(redis-server --version)" >> ~/netgescon-setup-info.txt
log_info "Setup Ubuntu 24.04 completato! 🎉"
echo ""
echo "═══════════════════════════════════════════════════════"
echo "✅ UBUNTU 24.04 LTS PRONTO PER NETGESCON"
echo "═══════════════════════════════════════════════════════"
echo ""
echo "🔧 SERVIZI INSTALLATI:"
echo " PHP 8.3 + FPM + OPcache"
echo " MySQL 8.0 ottimizzato"
echo " Nginx con configurazione NetGescon"
echo " Redis per caching"
echo " Node.js 20 LTS"
echo " Composer latest"
echo ""
echo "🌐 IP MACCHINA: $(hostname -I | awk '{print $1}')"
echo "📁 DIRECTORY PROGETTO: /var/www/netgescon/"
echo "💾 INFO SISTEMA: ~/netgescon-setup-info.txt"
echo ""
echo "═══════════════════════════════════════════════════════"
echo ""
echo "🔧 NEXT STEPS OBBLIGATORI:"
echo ""
echo "1⃣ CONFIGURA MYSQL (password sicura):"
echo " sudo mysql_secure_installation"
echo ""
echo "2⃣ CREA DATABASE NETGESCON:"
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 ""
echo "4⃣ ESEGUI SETUP LARAVEL:"
echo " ./setup-laravel-ubuntu2404.sh"
echo ""
echo "5⃣ CONFIGURA NGINX VIRTUAL HOST:"
echo " ./nginx-config-ubuntu2404.sh"
echo ""
echo "$(date): NetGescon Ubuntu 24.04 setup completato" >> ~/netgescon-setup.log
log_info "Ready per il prossimo step! 🚀"