#!/bin/bash echo "=== LEMP AUTO SETUP FOR DEBIAN 12 (NGINX + PHP + MARIADB + PHPMYADMIN) ===" # --- Default values --- DEF_WWW="/srv/www" # Ask web root directory read -p "Каталог для сайтов [$DEF_WWW]: " WWW_DIR WWW_DIR=${WWW_DIR:-$DEF_WWW} # Ask MySQL root password read -s -p "Пароль для root MySQL: " MYSQL_PASS echo read -s -p "Повторите пароль: " MYSQL_PASS2 echo if [ "$MYSQL_PASS" != "$MYSQL_PASS2" ]; then echo "Ошибка: пароли не совпадают!" exit 1 fi echo echo "=== Обновление системы и установка пакетов ===" apt update -y apt install -y nginx mariadb-server acl wget curl unzip echo "=== Установка PHP и модулей ===" apt install -y php php-fpm php-mysql php-cli php-curl php-zip php-xml php-gd php-mbstring php-intl php-simplexml php-common echo echo "=== Настройка каталога сайтов ===" mkdir -p "$WWW_DIR" chmod -R 775 "$WWW_DIR" chown -R www-data:www-data "$WWW_DIR" setfacl -R -m g:www-data:rwx "$WWW_DIR" echo echo "=== Создание тестовой страницы ===" cat < "$WWW_DIR/index.php" EOF chown www-data:www-data "$WWW_DIR/index.php" echo echo "=== Настройка Nginx ===" NGINX_CONF="/etc/nginx/sites-available/default" cp "$NGINX_CONF" "$NGINX_CONF.bak.$(date +%Y%m%d-%H%M%S)" cat < "$NGINX_CONF" server { listen 80 default_server; listen [::]:80 default_server; root $WWW_DIR; index index.php index.html index.htm; server_name _; location / { try_files \$uri \$uri/ /index.php?\$query_string; } location ~ \.php\$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; } location ~ /\.ht { deny all; } } EOF echo echo "=== Установка phpMyAdmin (неинтерактивно) ===" apt install -y debconf-utils # Автоматический ответ на вопросы phpMyAdmin echo "phpmyadmin phpmyadmin/reconfigure-webserver multiselect none" | debconf-set-selections echo "phpmyadmin phpmyadmin/dbconfig-install boolean false" | debconf-set-selections apt install -y phpmyadmin # Делаем символическую ссылку для nginx if [ ! -d "/usr/share/phpmyadmin" ]; then echo "ОШИБКА: phpMyAdmin не установлен!" else ln -s /usr/share/phpmyadmin "$WWW_DIR/phpmyadmin" 2>/dev/null fi echo echo "=== Настройка MariaDB root-пароля ===" echo "Определение текущего метода аутентификации root..." AUTH_METHOD=$(sudo mariadb -N -e "SELECT plugin FROM mysql.user WHERE User='root' AND Host='localhost';" 2>/dev/null) echo "Текущий метод: $AUTH_METHOD" if [[ "$AUTH_METHOD" != "unix_socket" ]]; then echo "Временно переключаем root на unix_socket..." sudo systemctl stop mariadb sudo mysqld_safe --skip-grant-tables >/dev/null 2>&1 & sleep 5 sudo mariadb <