#!/bin/bash # Перевірка прав root if [[ $EUID -ne 0 ]]; then echo "Цей скрипт повинен запускатися з правами root" exit 1 fi # Налаштування кольорів для виводу readonly RED="\033[0;31m" readonly GREEN="\033[0;32m" readonly YELLOW="\033[1;33m" readonly BLUE="\033[0;34m" readonly RESET="\033[0m" # Налаштування логування readonly LOG_FILE="/var/log/lamp-install.log" exec 1> >(tee -a "$LOG_FILE") exec 2> >(tee -a "$LOG_FILE" >&2) # Функція для виводу повідомлень log() { local type=$1 local message=$2 local timestamp=$(date '+%Y-%m-%d %H:%M:%S') case $type in "INFO") echo -e "${BLUE}[INFO]${RESET} ${timestamp} - $message" ;; "SUCCESS") echo -e "${GREEN}[SUCCESS]${RESET} ${timestamp} - $message" ;; "ERROR") echo -e "${RED}[ERROR]${RESET} ${timestamp} - $message" ;; "WARNING") echo -e "${YELLOW}[WARNING]${RESET} ${timestamp} - $message" ;; esac } # Функція для перевірки успішності виконання команд check_success() { if [ $? -ne 0 ]; then log "ERROR" "$1" exit 1 fi } # Функція для перевірки доступності порту check_port() { local port=$1 if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null ; then log "WARNING" "Порт $port вже використовується" return 1 fi return 0 } # Функція для створення резервної копії конфігурації backup_config() { local timestamp=$(date +%Y%m%d_%H%M%S) local backup_dir="/root/lamp_backup_$timestamp" log "INFO" "Створення резервної копії конфігурації..." mkdir -p "$backup_dir" [[ -d "/etc/apache2" ]] && cp -r /etc/apache2 "$backup_dir/" [[ -d "/etc/mysql" ]] && cp -r /etc/mysql "$backup_dir/" [[ -f "/etc/php/*/apache2/php.ini" ]] && cp /etc/php/*/apache2/php.ini "$backup_dir/" log "SUCCESS" "Резервна копія створена в $backup_dir" } # Функція для оптимізації Apache optimize_apache() { log "INFO" "Оптимізація Apache..." a2enmod expires headers deflate http2 cat > /etc/apache2/mods-available/mpm_event.conf < StartServers 3 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestWorkers 150 MaxConnectionsPerChild 0 EOF a2dismod mpm_prefork a2enmod mpm_event systemctl restart apache2 check_success "Не вдалося оптимізувати Apache" } # Функція для оптимізації MariaDB optimize_mariadb() { log "INFO" "Оптимізація MariaDB..." cat > /etc/mysql/conf.d/optimizations.cnf < /etc/php/*/mods-available/opcache.ini < /root/lamp_info.txt <