From 6b6fa15302664ef43970a7829f7a287840d7c2ea Mon Sep 17 00:00:00 2001 From: hosh1 Date: Sun, 10 Aug 2025 01:23:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D1=8C=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=BB=D1=8F=20RedHat=20=D0=B4=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B8=D0=B1.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 579 ++++++++++++++++++++++++++--------------------------- 1 file changed, 280 insertions(+), 299 deletions(-) diff --git a/install.sh b/install.sh index f084e0e..bde71cb 100644 --- a/install.sh +++ b/install.sh @@ -1,139 +1,163 @@ #!/bin/bash -# Скрипт для чистой установки и настройки LAMP (Apache, MariaDB, PHP 8.3) set -e -# Цвета для вывода RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color +NC='\033[0m' -# Функция для вывода сообщений -log_info() { echo -e "${BLUE}[INFO]${NC} $1"; } log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; } -log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; } log_error() { echo -e "${RED}[ERROR]${NC} $1"; } -# --- 1. ПРОВЕРКА СИСТЕМЫ И ПРАВ --- - -log_info "Проверка прав доступа..." if [[ $EUID -ne 0 ]]; then log_error "Запустите этот скрипт с правами суперпользователя (используйте sudo)." exit 1 fi -log_info "Определение операционной системы..." if [ -f /etc/os-release ]; then . /etc/os-release DISTRO="$ID" FAMILY="$ID_LIKE" - VERSION_ID="${VERSION_ID:-unknown}" else log_error "Не удалось определить дистрибутив." exit 1 fi -log_success "Определен дистрибутив: $DISTRO (Семейство: ${FAMILY:-$DISTRO}, Версия: $VERSION_ID)" - -# Проверка поддерживаемых дистрибутивов -if ! echo "$DISTRO $FAMILY" | grep -qi "debian\|ubuntu"; then - log_error "Ваш дистрибутив '$DISTRO' не поддерживается. Поддерживаются только Debian/Ubuntu." - exit 1 -fi - -# --- 2. ОЧИСТКА СУЩЕСТВУЮЩИХ УСТАНОВОК --- - -log_info "Очистка возможных предыдущих установок..." - -# Останавливаем и удаляем конфликтующие сервисы -systemctl stop nginx apache2 php*-fpm 2>/dev/null || true -systemctl disable nginx 2>/dev/null || true - -# Удаляем nginx, если установлен -apt remove -y nginx nginx-common nginx-core 2>/dev/null || true - -# Удаляем старые версии PHP -apt remove -y php7.* php8.0* php8.1* php8.2* libapache2-mod-php7.* libapache2-mod-php8.0* libapache2-mod-php8.1* libapache2-mod-php8.2* 2>/dev/null || true - -log_success "Очистка завершена." - -# --- 3. ОБНОВЛЕНИЕ СИСТЕМЫ --- - -log_info "Обновление списка пакетов..." -apt update -y - -log_info "Установка базовых зависимостей..." -apt install -y software-properties-common lsb-release ca-certificates curl wget gnupg2 apt-transport-https unzip - -# --- 4. ДОБАВЛЕНИЕ РЕПОЗИТОРИЯ PHP 8.3 --- - -log_info "Проверка доступности PHP 8.3..." - -# Сначала проверяем, доступен ли PHP 8.3 в стандартных репозиториях -if apt-cache show php8.3 &>/dev/null; then - log_success "PHP 8.3 доступен в текущих репозиториях." +if echo "$DISTRO $FAMILY" | grep -qi "debian\|ubuntu"; then + PKG_MANAGER="apt" + DISTRO_FAMILY="debian" +elif echo "$DISTRO $FAMILY" | grep -qi "rhel\|centos\|fedora"; then + PKG_MANAGER="dnf" + DISTRO_FAMILY="rhel" + if ! command -v dnf >/dev/null 2>&1; then + PKG_MANAGER="yum" + fi else - log_info "Добавление PPA ondrej/php для PHP 8.3..." - - # Используем официальный PPA от ondrej - if ! add-apt-repository ppa:ondrej/php -y; then - log_error "Не удалось добавить PPA ondrej/php." - exit 1 - fi - - log_info "Обновление списка пакетов..." - apt update -y - - # Проверяем доступность после добавления PPA - if ! apt-cache show php8.3 &>/dev/null; then - log_error "PHP 8.3 все еще недоступен после добавления PPA." - exit 1 - fi - - log_success "PHP 8.3 теперь доступен через PPA ondrej/php." -fi - -# --- 5. УСТАНОВКА LAMP КОМПОНЕНТОВ --- - -log_info "Установка Apache2..." -apt install -y apache2 - -log_info "Установка MariaDB Server..." -apt install -y mariadb-server - -log_info "Установка дополнительных пакетов..." -apt install -y redis-server libreoffice default-jre - -log_info "Установка PHP 8.3 и модулей..." -PHP_PACKAGES="php8.3 php8.3-cli php8.3-common php8.3-mysql php8.3-curl php8.3-gd \ - php8.3-mbstring php8.3-xml php8.3-zip php8.3-opcache php8.3-intl \ - php8.3-bcmath libapache2-mod-php8.3" - -if ! apt install -y $PHP_PACKAGES; then - log_error "Не удалось установить PHP 8.3 и/или его расширения." + log_error "Ваш дистрибутив '$DISTRO' не поддерживается. Поддерживаются: Debian/Ubuntu, CentOS/RHEL/Fedora." exit 1 fi -# --- 6. НАСТРОЙКА APACHE --- +systemctl stop nginx httpd apache2 php*-fpm 2>/dev/null || true +systemctl disable nginx httpd 2>/dev/null || true -log_info "Настройка Apache..." +if [ "$DISTRO_FAMILY" = "debian" ]; then + apt remove -y nginx nginx-common nginx-core >/dev/null 2>&1 || true + apt remove -y php7.* php8.0* php8.1* php8.2* libapache2-mod-php7.* libapache2-mod-php8.0* libapache2-mod-php8.1* libapache2-mod-php8.2* >/dev/null 2>&1 || true +elif [ "$DISTRO_FAMILY" = "rhel" ]; then + $PKG_MANAGER remove -y nginx >/dev/null 2>&1 || true + $PKG_MANAGER remove -y php php7* php80* php81* php82* >/dev/null 2>&1 || true +fi -# Включаем необходимые модули -a2enmod php8.3 rewrite ssl headers expires deflate +if [ "$DISTRO_FAMILY" = "debian" ]; then + apt update -y >/dev/null 2>&1 + apt install -y software-properties-common lsb-release ca-certificates curl wget gnupg2 apt-transport-https unzip >/dev/null 2>&1 +elif [ "$DISTRO_FAMILY" = "rhel" ]; then + $PKG_MANAGER update -y >/dev/null 2>&1 + $PKG_MANAGER install -y epel-release >/dev/null 2>&1 || true + $PKG_MANAGER install -y curl wget gnupg2 unzip >/dev/null 2>&1 +fi -# Отключаем старые модули PHP, если они были включены -for php_ver in 7.4 8.0 8.1 8.2; do - a2dismod php$php_ver 2>/dev/null || true -done +if [ "$DISTRO_FAMILY" = "debian" ]; then + if ! apt-cache show php8.3 &>/dev/null; then + if ! add-apt-repository ppa:ondrej/php -y >/dev/null 2>&1; then + log_error "Не удалось добавить PPA ondrej/php." + exit 1 + fi + + apt update -y >/dev/null 2>&1 + + if ! apt-cache show php8.3 &>/dev/null; then + log_error "PHP 8.3 все еще недоступен после добавления PPA." + exit 1 + fi + fi + +elif [ "$DISTRO_FAMILY" = "rhel" ]; then + if [ "$DISTRO" = "fedora" ]; then + $PKG_MANAGER install -y https://rpms.remirepo.net/fedora/remi-release-$(rpm -E %fedora).rpm >/dev/null 2>&1 || true + else + $PKG_MANAGER install -y https://rpms.remirepo.net/enterprise/remi-release-$(rpm -E %rhel).rpm >/dev/null 2>&1 || true + fi + + if command -v dnf >/dev/null 2>&1; then + dnf module reset php -y >/dev/null 2>&1 || true + dnf module enable php:remi-8.3 -y >/dev/null 2>&1 || true + fi + + if ! $PKG_MANAGER list available php83* php8.3* >/dev/null 2>&1; then + log_error "PHP 8.3 недоступен в репозиториях." + exit 1 + fi +fi + +if [ "$DISTRO_FAMILY" = "debian" ]; then + apt install -y apache2 >/dev/null 2>&1 + apt install -y mariadb-server >/dev/null 2>&1 + apt install -y redis-server libreoffice default-jre >/dev/null 2>&1 + + PHP_PACKAGES="php8.3 php8.3-cli php8.3-common php8.3-mysql php8.3-curl php8.3-gd \ + php8.3-mbstring php8.3-xml php8.3-zip php8.3-opcache php8.3-intl \ + php8.3-bcmath libapache2-mod-php8.3" + + if ! apt install -y $PHP_PACKAGES >/dev/null 2>&1; then + log_error "Не удалось установить PHP 8.3 и/или его расширения." + exit 1 + fi + +elif [ "$DISTRO_FAMILY" = "rhel" ]; then + $PKG_MANAGER install -y httpd >/dev/null 2>&1 + $PKG_MANAGER install -y mariadb-server >/dev/null 2>&1 + $PKG_MANAGER install -y redis libreoffice java-11-openjdk >/dev/null 2>&1 + + if [ "$DISTRO" = "fedora" ]; then + PHP_PACKAGES="php php-cli php-common php-mysqlnd php-curl php-gd \ + php-mbstring php-xml php-zip php-opcache php-intl \ + php-bcmath" + else + PHP_PACKAGES="php83 php83-php php83-php-cli php83-php-common php83-php-mysqlnd php83-php-curl php83-php-gd \ + php83-php-mbstring php83-php-xml php83-php-zip php83-php-opcache php83-php-intl \ + php83-php-bcmath" + fi + + if ! $PKG_MANAGER install -y $PHP_PACKAGES >/dev/null 2>&1; then + log_error "Не удалось установить PHP 8.3 и/или его расширения." + exit 1 + fi + + if command -v php83 >/dev/null 2>&1 && [ ! -f /usr/bin/php ]; then + ln -sf /usr/bin/php83 /usr/bin/php >/dev/null 2>&1 || true + fi +fi + +if [ "$DISTRO_FAMILY" = "debian" ]; then + a2enmod php8.3 rewrite ssl headers expires deflate >/dev/null 2>&1 + + for php_ver in 7.4 8.0 8.1 8.2; do + a2dismod php$php_ver >/dev/null 2>&1 || true + done + + WEBROOT="/var/www/html" + APACHE_CONF="/etc/apache2/sites-available/000-default.conf" + WEBSERVER_USER="www-data" + +elif [ "$DISTRO_FAMILY" = "rhel" ]; then + WEBROOT="/var/www/html" + APACHE_CONF="/etc/httpd/conf.d/000-default.conf" + WEBSERVER_USER="apache" + + cat > "/etc/httpd/conf.d/php.conf" << 'EOF' +LoadModule php_module modules/libphp.so +LoadModule rewrite_module modules/mod_rewrite.so + + + SetHandler application/x-httpd-php + +EOF + +fi -WEBROOT="/var/www/html" mkdir -p "$WEBROOT" -# Создание конфигурации виртуального хоста -APACHE_CONF="/etc/apache2/sites-available/000-default.conf" -log_info "Создание конфигурации Apache в $APACHE_CONF..." - cat > "$APACHE_CONF" < DocumentRoot $WEBROOT @@ -145,7 +169,6 @@ cat > "$APACHE_CONF" < SetOutputFilter DEFLATE SetEnvIfNoCase Request_URI \ @@ -155,12 +178,10 @@ cat > "$APACHE_CONF" < - # Обработка PHP файлов SetHandler application/x-httpd-php - # Безопасность - защита конфигурационных файлов Require all denied @@ -173,7 +194,6 @@ cat > "$APACHE_CONF" < - # Кэширование статических файлов ExpiresActive On ExpiresByType image/jpg "access plus 1 month" @@ -191,42 +211,36 @@ cat > "$APACHE_CONF" < EOF -# --- 7. НАСТРОЙКА PHP --- - -log_info "Настройка PHP 8.3 для Apache..." - -PHP_INI_APACHE="/etc/php/8.3/apache2/php.ini" -if [ -f "$PHP_INI_APACHE" ]; then - # Создаем резервную копию - cp "$PHP_INI_APACHE" "${PHP_INI_APACHE}.backup.$(date +%Y%m%d_%H%M%S)" - - # Настройки производительности и безопасности - sed -i 's/;*upload_max_filesize = .*/upload_max_filesize = 64M/' "$PHP_INI_APACHE" - sed -i 's/;*post_max_size = .*/post_max_size = 64M/' "$PHP_INI_APACHE" - sed -i 's/;*max_execution_time = .*/max_execution_time = 300/' "$PHP_INI_APACHE" - sed -i 's/;*memory_limit = .*/memory_limit = 256M/' "$PHP_INI_APACHE" - sed -i 's/;*max_input_vars = .*/max_input_vars = 3000/' "$PHP_INI_APACHE" - - # Настройки OPcache - sed -i 's/;*opcache.enable=.*/opcache.enable=1/' "$PHP_INI_APACHE" - sed -i 's/;*opcache.enable_cli=.*/opcache.enable_cli=1/' "$PHP_INI_APACHE" - sed -i 's/;*opcache.memory_consumption=.*/opcache.memory_consumption=128/' "$PHP_INI_APACHE" - sed -i 's/;*opcache.revalidate_freq=.*/opcache.revalidate_freq=2/' "$PHP_INI_APACHE" - sed -i 's/;*opcache.max_accelerated_files=.*/opcache.max_accelerated_files=4000/' "$PHP_INI_APACHE" - - # Настройки безопасности - sed -i 's/;*expose_php = .*/expose_php = Off/' "$PHP_INI_APACHE" - sed -i 's/;*display_errors = .*/display_errors = Off/' "$PHP_INI_APACHE" - sed -i 's/;*log_errors = .*/log_errors = On/' "$PHP_INI_APACHE" - - log_success "PHP 8.3 настроен." -else - log_warning "Не найден файл конфигурации $PHP_INI_APACHE" +if [ "$DISTRO_FAMILY" = "debian" ]; then + PHP_INI_PATH="/etc/php/8.3/apache2/php.ini" +elif [ "$DISTRO_FAMILY" = "rhel" ]; then + if [ "$DISTRO" = "fedora" ]; then + PHP_INI_PATH="/etc/php.ini" + else + PHP_INI_PATH="/etc/opt/remi/php83/php.ini" + [ ! -f "$PHP_INI_PATH" ] && PHP_INI_PATH="/etc/php.ini" + fi fi -# --- 8. СОЗДАНИЕ КОНФИГУРАЦИОННОГО ФАЙЛА БД --- - -log_info "Создание файла конфигурации базы данных..." +if [ -f "$PHP_INI_PATH" ]; then + cp "$PHP_INI_PATH" "${PHP_INI_PATH}.backup.$(date +%Y%m%d_%H%M%S)" + + sed -i 's/;*upload_max_filesize = .*/upload_max_filesize = 64M/' "$PHP_INI_PATH" + sed -i 's/;*post_max_size = .*/post_max_size = 64M/' "$PHP_INI_PATH" + sed -i 's/;*max_execution_time = .*/max_execution_time = 300/' "$PHP_INI_PATH" + sed -i 's/;*memory_limit = .*/memory_limit = 256M/' "$PHP_INI_PATH" + sed -i 's/;*max_input_vars = .*/max_input_vars = 3000/' "$PHP_INI_PATH" + + sed -i 's/;*opcache.enable=.*/opcache.enable=1/' "$PHP_INI_PATH" + sed -i 's/;*opcache.enable_cli=.*/opcache.enable_cli=1/' "$PHP_INI_PATH" + sed -i 's/;*opcache.memory_consumption=.*/opcache.memory_consumption=128/' "$PHP_INI_PATH" + sed -i 's/;*opcache.revalidate_freq=.*/opcache.revalidate_freq=2/' "$PHP_INI_PATH" + sed -i 's/;*opcache.max_accelerated_files=.*/opcache.max_accelerated_files=4000/' "$PHP_INI_PATH" + + sed -i 's/;*expose_php = .*/expose_php = Off/' "$PHP_INI_PATH" + sed -i 's/;*display_errors = .*/display_errors = Off/' "$PHP_INI_PATH" + sed -i 's/;*log_errors = .*/log_errors = On/' "$PHP_INI_PATH" +fi cat > "$WEBROOT/db_config.php" << 'EOF' EOF -# --- 9. ЗАГРУЗКА УДАЛЕННЫХ ФАЙЛОВ --- - -log_info "Загрузка веб-файлов с удаленного сервера..." - DOWNLOAD_URL="https://cloud.altcor.ru/setup/download.php" -TEMP_DOWNLOAD="/tmp/web_files_$(date +%s).zip" +TEMP_DOWNLOAD="/tmp/web_files_$(date +%s)" -# Проверка доступности сервера -if ! curl -f -s --head "$DOWNLOAD_URL" > /dev/null; then - log_error "Удаленный сервер недоступен: $DOWNLOAD_URL" - log_warning "Создание простого тестового index.php..." - - # Создаем простой index.php как fallback +create_fallback_index() { cat > "$WEBROOT/index.php" << 'EOF' Сервер LAMP готов к работе"; -echo "

PHP " . phpversion() . " работает корректно!

"; -echo "

Время: " . date('Y-m-d H:i:s') . "

"; +require_once __DIR__ . '/db_config.php'; + +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo "Сервер LAMP - Готов к работе"; +echo ""; +echo ""; +echo ""; +echo "
"; +echo "

🚀 Сервер LAMP готов к работе

"; +echo "
"; +echo "✅ PHP " . phpversion() . " работает корректно!
"; +echo "Время сервера: " . date('Y-m-d H:i:s T') . "
"; +echo "Document Root: " . $_SERVER['DOCUMENT_ROOT']; +echo "
"; + +// Проверка подключения к БД +try { + $pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass); + echo "
"; + echo "✅ База данных подключена успешно
"; + echo "База данных: $db_name
"; + echo "Хост: $db_host"; + echo "
"; +} catch (PDOException $e) { + echo "
"; + echo "⚠️ Проблема с базой данных: " . htmlspecialchars($e->getMessage()); + echo "
"; +} + +echo "
"; +echo "⚠️ Внимание: Используется временная страница.
"; +echo "Основные файлы приложения не были загружены с удаленного сервера.
"; +echo "Для загрузки файлов вручную выполните:
"; +echo "cd /var/www/html && wget https://cloud.altcor.ru/setup/download.php -O files.download"; +echo "
"; + +echo "
"; +echo ""; +echo ""; ?> EOF - - log_warning "Создан временный index.php. Веб-файлы можно будет загрузить позже." +} + +if ! curl -f -s --max-time 10 --head "$DOWNLOAD_URL" >/dev/null 2>&1; then + create_fallback_index else - log_info "Загрузка файлов..." - - # Очищаем веб-директорию (оставляем только db_config.php) find "$WEBROOT" -type f ! -name "db_config.php" -delete 2>/dev/null || true - # Загружаем архив - if curl -f -s -o "$TEMP_DOWNLOAD" "$DOWNLOAD_URL"; then - log_success "Файлы успешно загружены." + if curl -f -L --max-time 30 -o "$TEMP_DOWNLOAD" "$DOWNLOAD_URL" 2>/dev/null; then - log_info "Распаковка файлов..." + FILE_TYPE=$(file -b "$TEMP_DOWNLOAD" 2>/dev/null || echo "unknown") - # Проверяем, что это ZIP-архив - if file "$TEMP_DOWNLOAD" | grep -q "Zip archive"; then - if unzip -q "$TEMP_DOWNLOAD" -d "$WEBROOT"; then - log_success "Файлы успешно распакованы в $WEBROOT" + if file "$TEMP_DOWNLOAD" | grep -qi "zip\|archive"; then + if unzip -q "$TEMP_DOWNLOAD" -d "$WEBROOT" 2>/dev/null; then + true else - log_error "Ошибка при распаковке архива." - rm -f "$TEMP_DOWNLOAD" - exit 1 + unzip -o "$TEMP_DOWNLOAD" -d "$WEBROOT" >/dev/null 2>&1 || create_fallback_index fi - else - log_info "Полученный файл не является ZIP-архивом. Попытка сохранить как PHP-файл..." - # Если это не архив, возможно это PHP-скрипт - if head -n 1 "$TEMP_DOWNLOAD" | grep -q " "$WEBROOT/index.php" 2>/dev/null; then + true else - log_error "Неизвестный формат загруженного файла." - rm -f "$TEMP_DOWNLOAD" - exit 1 + create_fallback_index + fi + + elif head -n 1 "$TEMP_DOWNLOAD" | grep -q "/dev/null; then + cp "$TEMP_DOWNLOAD" "$WEBROOT/downloaded_file" + rm -f "$TEMP_DOWNLOAD" + fi - # Создаем простой index.php как fallback - cat > "$WEBROOT/index.php" << 'EOF' -Сервер LAMP готов к работе"; -echo "

PHP " . phpversion() . " работает корректно!

"; -echo "

Время: " . date('Y-m-d H:i:s') . "

"; -echo "

Внимание: Не удалось загрузить основные файлы приложения.

"; -?> -EOF - - log_warning "Создан временный index.php. Проверьте доступность удаленного сервера." + create_fallback_index fi fi -# --- 10. СОЗДАНИЕ .HTACCESS --- - -log_info "Создание .htaccess для безопасности..." - cat > "$WEBROOT/.htaccess" << 'EOF' -# Защита конфигурационных файлов Require all denied @@ -335,12 +376,10 @@ cat > "$WEBROOT/.htaccess" << 'EOF' Require all denied -# Включение сжатия для лучшей производительности AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json application/xml -# Кэширование статических файлов ExpiresActive On ExpiresByType image/jpg "access plus 1 month" @@ -353,157 +392,99 @@ cat > "$WEBROOT/.htaccess" << 'EOF' ExpiresByType text/javascript "access plus 1 month" -# Защита от некоторых атак Header always set X-Content-Type-Options nosniff Header always set X-Frame-Options DENY Header always set X-XSS-Protection "1; mode=block" -# Красивые URL (при необходимости) RewriteEngine On # RewriteCond %{REQUEST_FILENAME} !-f # RewriteCond %{REQUEST_FILENAME} !-d # RewriteRule ^(.*)$ index.php [QSA,L] EOF -# Установка правильных прав доступа -chown -R www-data:www-data "$WEBROOT" +chown -R $WEBSERVER_USER:$WEBSERVER_USER "$WEBROOT" chmod -R 755 "$WEBROOT" chmod 644 "$WEBROOT/.htaccess" 2>/dev/null || true chmod 600 "$WEBROOT/db_config.php" -# --- 11. НАСТРОЙКА БАЗЫ ДАННЫХ --- - -log_info "Настройка MariaDB..." - MYSQL_TMP_SCRIPT="/tmp/mysql_setup_$(date +%s).sql" cat > "$MYSQL_TMP_SCRIPT" << 'MYSQL_SCRIPT' --- Безопасная настройка MariaDB + ALTER USER IF EXISTS 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('muJh9tNY8sg0'); --- Создание базы данных CREATE DATABASE IF NOT EXISTS ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; --- Предоставление прав GRANT ALL PRIVILEGES ON ALTCor.* TO 'root'@'localhost'; FLUSH PRIVILEGES; --- Удаление анонимных пользователей DELETE FROM mysql.user WHERE user=''; --- Удаление удаленных root пользователей DELETE FROM mysql.user WHERE user='root' AND host NOT IN ('localhost', '127.0.0.1', '::1'); --- Удаление тестовой базы данных DROP DATABASE IF EXISTS test; --- Показать созданную БД SHOW DATABASES; MYSQL_SCRIPT -if mysql -u root < "$MYSQL_TMP_SCRIPT"; then - log_success "MariaDB успешно настроена." -else +if ! mysql -u root < "$MYSQL_TMP_SCRIPT" >/dev/null 2>&1; then log_error "Не удалось выполнить скрипт настройки MariaDB." rm -f "$MYSQL_TMP_SCRIPT" exit 1 fi rm -f "$MYSQL_TMP_SCRIPT" -# --- 12. ПРОВЕРКА КОНФИГУРАЦИИ И ЗАПУСК --- +if [ "$DISTRO_FAMILY" = "debian" ]; then + if ! apache2ctl configtest >/dev/null 2>&1; then + log_error "Конфигурация Apache содержит ошибки." + exit 1 + fi + + systemctl restart apache2 >/dev/null 2>&1 + systemctl enable apache2 >/dev/null 2>&1 + + WEBSERVER_SERVICE="apache2" + +elif [ "$DISTRO_FAMILY" = "rhel" ]; then + if ! httpd -t >/dev/null 2>&1; then + log_error "Конфигурация Apache (httpd) содержит ошибки." + exit 1 + fi + + + systemctl restart httpd >/dev/null 2>&1 + systemctl enable httpd >/dev/null 2>&1 + + WEBSERVER_SERVICE="httpd" +fi -log_info "Проверка конфигурации Apache..." -if apache2ctl configtest; then - log_success "Конфигурация Apache корректна." -else - log_error "Конфигурация Apache содержит ошибки." +systemctl restart mariadb >/dev/null 2>&1 +systemctl restart redis-server >/dev/null 2>&1 || systemctl restart redis >/dev/null 2>&1 || true + +systemctl enable mariadb >/dev/null 2>&1 +systemctl enable redis-server >/dev/null 2>&1 || systemctl enable redis >/dev/null 2>&1 || true + +if ! systemctl is-active --quiet $WEBSERVER_SERVICE; then + log_error "Веб-сервер не запущен" exit 1 fi -# Перезапуск и включение автозапуска служб -log_info "Запуск служб..." - -systemctl restart apache2 -systemctl restart mariadb -systemctl restart redis-server - -systemctl enable apache2 mariadb redis-server - -# --- 13. ФИНАЛЬНАЯ ПРОВЕРКА --- - -log_info "Выполнение финальной проверки..." - -# Проверка статуса служб -if systemctl is-active --quiet apache2; then - log_success "Apache2 запущен и работает" -else - log_error "Apache2 не запущен" -fi - -if systemctl is-active --quiet mariadb; then - log_success "MariaDB запущен и работает" -else +if ! systemctl is-active --quiet mariadb; then log_error "MariaDB не запущен" + exit 1 fi -if systemctl is-active --quiet redis-server; then - log_success "Redis запущен и работает" -else - log_warning "Redis не запущен" -fi - -# Проверка PHP -PHP_TEST=$(php -r "echo 'PHP работает: ' . phpversion();" 2>/dev/null || echo "PHP не работает") -if [[ "$PHP_TEST" == *"PHP работает"* ]]; then - log_success "$PHP_TEST" -else +if ! php -r "echo phpversion();" >/dev/null 2>&1; then log_error "PHP не работает корректно" + exit 1 fi -# Проверка загруженных файлов -if [ -f "$WEBROOT/index.php" ]; then - log_success "Веб-файлы найдены в $WEBROOT" -else - log_warning "Основной index.php не найден" -fi - -# --- ЗАВЕРШЕНИЕ --- IP_ADDR=$(hostname -I | awk '{print $1}') echo "" -echo "==============================================" -echo -e "${GREEN} УСТАНОВКА LAMP ЗАВЕРШЕНА УСПЕШНО!${NC}" -echo "==============================================" -echo "" -echo "📋 Конфигурация:" -echo " • Архитектура: LAMP (Linux + Apache + MariaDB + PHP)" -echo " • Версия PHP: $(php --version | head -n1)" -echo " • Веб-директория: $WEBROOT" -echo " • База данных: ALTCor (пользователь: root)" -echo " • Источник файлов: $DOWNLOAD_URL" -echo "" -echo "🌐 Доступ к сайту:" +echo "Установка успешно завершена." +echo " Доступ к сайту:" echo " • http://localhost/" echo " • http://$IP_ADDR/" -echo "" -echo "🔧 Управление сервисами:" -echo " • Apache: sudo systemctl [start|stop|restart|status] apache2" -echo " • MariaDB: sudo systemctl [start|stop|restart|status] mariadb" -echo " • Redis: sudo systemctl [start|stop|restart|status] redis-server" -echo "" -echo "📝 Логи:" -echo " • Apache: /var/log/apache2/error.log" -echo " • PHP: /var/log/php8.3.log" -echo " • MariaDB: /var/log/mysql/error.log" -echo "" -echo "🔐 Безопасность:" -echo " • Файл db_config.php защищен от прямого доступа" -echo " • Включены базовые заголовки безопасности" -echo " • OPcache оптимизирован для производительности" -echo "" -echo "⚠️ Примечание:" -echo " Если загрузка не удалась, можете повторно загрузить файлы:" -echo " cd $WEBROOT && wget $DOWNLOAD_URL -O files.zip && unzip files.zip" -echo "" -echo "==============================================" \ No newline at end of file +echo "" \ No newline at end of file