Фикс установки Apache на RHEL системах

This commit is contained in:
2025-08-11 03:06:53 +03:00
parent 56eb4c588c
commit 361110af46

View File

@@ -434,13 +434,123 @@ proceed_with_installation() {
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
WEBROOT="/var/www/html"
APACHE_CONF="/etc/httpd/conf.d/000-default.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
LoadModule rewrite_module modules/mod_rewrite.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
# Enable useful modules
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
EOF
else
# Для Rocky Linux/CentOS/RHEL с Remi
# Проверяем доступные PHP модули
if [ -f "/etc/opt/remi/php83/php.ini" ]; then
# Remi PHP 8.3
cat > "/etc/httpd/conf.d/php.conf" << 'EOF'
# PHP 8.3 from Remi repository
LoadModule php_module modules/libphp83.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
# Enable useful modules
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
EOF
else
# Стандартный PHP
cat > "/etc/httpd/conf.d/php.conf" << 'EOF'
# Standard PHP configuration
<IfModule !mod_php.c>
LoadModule php_module modules/libphp.so
</IfModule>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
# Enable useful modules
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
EOF
fi
fi
cat > "/etc/httpd/conf.d/altcor.conf" << 'EOF'
# Altcor main configuration
# Отключаем ServerTokens и ServerSignature для безопасности
ServerTokens Prod
ServerSignature Off
# Основные настройки
<Directory "/var/www/html">
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
# Настройки сжатия
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \
\.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
</IfModule>
# Кэширование
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "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"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
</IfModule>
# Заголовки безопасности
<IfModule mod_headers.c>
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options DENY
Header always set X-XSS-Protection "1; mode=block"
</IfModule>
</Directory>
# Запрет доступа к конфигурационным файлам
<Files "*.conf">
Require all denied
</Files>
<Files ".htaccess">
Require all denied
</Files>
<Files ".env">
Require all denied
</Files>
# Обработка PHP файлов
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
@@ -449,8 +559,10 @@ EOF
log_success "Модули Apache настроены"
log_step "Создание конфигурации виртуального хоста..."
mkdir -p "$WEBROOT"
mkdir -p "$WEBROOT"
# Для Debian/Ubuntu создаем стандартный VirtualHost
if [ "$DISTRO_FAMILY" = "debian" ]; then
cat > "$APACHE_CONF" <<EOF
<VirtualHost *:80>
DocumentRoot $WEBROOT
@@ -499,6 +611,8 @@ EOF
CustomLog \${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
EOF
fi
log_success "Конфигурация виртуального хоста создана"
log_step "Настройка PHP.ini..."
@@ -879,15 +993,34 @@ MYSQL_SCRIPT
if [ "$DISTRO_FAMILY" = "debian" ]; then
if ! apache2ctl configtest >/dev/null 2>&1; then
log_error "Конфигурация Apache содержит ошибки."
apache2ctl configtest # Показываем ошибки для диагностики
exit 1
fi
WEBSERVER_SERVICE="apache2"
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
# Для Rocky Linux/RHEL сначала проверим синтаксис конфигурации
if ! httpd -t >/dev/null 2>&1; then
log_error "Конфигурация Apache (httpd) содержит ошибки."
log_error "Конфигурация Apache (httpd) содержит ошибки:"
echo ""
httpd -t # Показываем детали ошибок
echo ""
log_info "Попытка исправления..."
# Проверяем наличие основных модулей
if ! httpd -M 2>/dev/null | grep -q "rewrite_module"; then
echo "LoadModule rewrite_module modules/mod_rewrite.so" >> /etc/httpd/conf.d/altcor.conf
fi
# Повторная проверка
if ! httpd -t >/dev/null 2>&1; then
log_error "Не удалось исправить конфигурацию Apache:"
httpd -t
exit 1
else
log_success "Конфигурация исправлена"
fi
fi
WEBSERVER_SERVICE="httpd"