From 4c11f42fb0d3deeaedb7c15832407ecdb0611be3 Mon Sep 17 00:00:00 2001 From: hosh1 Date: Mon, 11 Aug 2025 03:14:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 105 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 28 deletions(-) diff --git a/install.sh b/install.sh index 62d77e8..1c52ce5 100644 --- a/install.sh +++ b/install.sh @@ -390,8 +390,8 @@ proceed_with_installation() { if [ "$DISTRO_FAMILY" = "debian" ]; then export DEBIAN_FRONTEND=noninteractive 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" + 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 и/или его расширения." @@ -400,13 +400,15 @@ proceed_with_installation() { elif [ "$DISTRO_FAMILY" = "rhel" ]; then if [ "$DISTRO" = "fedora" ]; then + # Для Fedora используем PHP-FPM 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" + php-mbstring php-xml php-zip php-opcache php-intl \ + php-bcmath php-fpm" 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" + # Для Rocky Linux/CentOS используем PHP-FPM из Remi + PHP_PACKAGES="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 php83-php-fpm" fi if ! $PKG_MANAGER install -y $PHP_PACKAGES >/dev/null 2>&1; then @@ -414,8 +416,10 @@ proceed_with_installation() { exit 1 fi + # Создаем символические ссылки для PHP83 если нужно 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 + ln -sf /opt/remi/php83/root/usr/bin/php /usr/bin/php >/dev/null 2>&1 || true + ln -sf /opt/remi/php83/root/usr/bin/php-fpm /usr/bin/php-fpm >/dev/null 2>&1 || true fi fi log_success "PHP 8.3 и расширения установлены" @@ -434,25 +438,34 @@ proceed_with_installation() { elif [ "$DISTRO_FAMILY" = "rhel" ]; then WEBROOT="/var/www/html" - APACHE_CONF="/etc/httpd/conf.d/altcor.conf" # Изменено имя файла + APACHE_CONF="/etc/httpd/conf.d/altcor.conf" WEBSERVER_USER="apache" - # Исправленная конфигурация PHP для RHEL - if [ "$DISTRO" = "fedora" ]; then - # Для Fedora - cat > "/etc/httpd/conf.d/php.conf" << 'EOF' -# PHP configuration for Apache -LoadModule php_module modules/libphp.so + # НЕ ЗАГРУЖАЕМ mod_php - используем PHP-FPM! + # Удаляем старые конфигурации PHP + rm -f /etc/httpd/conf.d/php.conf - - SetHandler application/x-httpd-php - + cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF' +# PHP-FPM configuration for Apache +# НЕ загружаем mod_php - используем PHP-FPM через ProxyPass -# Enable useful modules +# Включаем нужные модули (без mod_php) LoadModule rewrite_module modules/mod_rewrite.so LoadModule headers_module modules/mod_headers.so LoadModule expires_module modules/mod_expires.so LoadModule deflate_module modules/mod_deflate.so +LoadModule proxy_module modules/mod_proxy.so +LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so + +# Обработка PHP через PHP-FPM + + SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost" + + +# Альтернативный способ через TCP (если Unix socket не работает) +# +# SetHandler "proxy:fcgi://127.0.0.1:9000" +# EOF else # Для Rocky Linux/CentOS/RHEL с Remi @@ -494,14 +507,14 @@ EOF fi fi - cat > "/etc/httpd/conf.d/altcor.conf" << 'EOF' + cat > "/etc/httpd/conf.d/altcor.conf" << 'EOF' # Altcor main configuration -# Отключаем ServerTokens и ServerSignature для безопасности +# Отключаем ServerTokens и ServerSignature для безопасности ServerTokens Prod ServerSignature Off -# Основные настройки +# Основные настройки директории Options -Indexes +FollowSymLinks AllowOverride All @@ -520,7 +533,7 @@ ServerSignature Off ExpiresActive On ExpiresByType image/jpg "access plus 1 month" - ExpiresByType image/jpeg "access plus 1 month" + ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" @@ -549,13 +562,49 @@ ServerSignature Off Require all denied - -# Обработка PHP файлов - - SetHandler application/x-httpd-php - EOF fi + + log_info "Настройка PHP-FPM..." + + # Определяем путь к конфигурации PHP-FPM + if [ -f "/etc/opt/remi/php83/php-fpm.d/www.conf" ]; then + PHP_FPM_CONF="/etc/opt/remi/php83/php-fpm.d/www.conf" + PHP_FPM_SERVICE="php83-php-fpm" + elif [ -f "/etc/php-fpm.d/www.conf" ]; then + PHP_FPM_CONF="/etc/php-fpm.d/www.conf" + PHP_FPM_SERVICE="php-fpm" + else + log_error "Не найден конфигурационный файл PHP-FPM" + exit 1 + fi + + cp "$PHP_FPM_CONF" "${PHP_FPM_CONF}.backup.$(date +%Y%m%d_%H%M%S)" + + # Настройки для работы с Apache + sed -i 's/;*listen = .*/listen = \/run\/php-fpm\/www.sock/' "$PHP_FPM_CONF" + sed -i 's/;*listen.owner = .*/listen.owner = apache/' "$PHP_FPM_CONF" + sed -i 's/;*listen.group = .*/listen.group = apache/' "$PHP_FPM_CONF" + sed -i 's/;*listen.mode = .*/listen.mode = 0660/' "$PHP_FPM_CONF" + sed -i 's/;*user = .*/user = apache/' "$PHP_FPM_CONF" + sed -i 's/;*group = .*/group = apache/' "$PHP_FPM_CONF" + + # Создаем директорию для socket + mkdir -p /run/php-fpm + chown apache:apache /run/php-fpm + + # Запускаем и включаем PHP-FPM + systemctl start $PHP_FPM_SERVICE >/dev/null 2>&1 + systemctl enable $PHP_FPM_SERVICE >/dev/null 2>&1 + + if ! systemctl is-active --quiet $PHP_FPM_SERVICE; then + log_error "PHP-FPM не удалось запустить" + exit 1 + fi + + log_success "PHP-FPM настроен и запущен" + fi + log_success "Модули Apache настроены" log_step "Создание конфигурации виртуального хоста..."