Фикс
This commit is contained in:
229
install.sh
229
install.sh
@@ -441,76 +441,103 @@ proceed_with_installation() {
|
||||
APACHE_CONF="/etc/httpd/conf.d/altcor.conf"
|
||||
WEBSERVER_USER="apache"
|
||||
|
||||
# НЕ ЗАГРУЖАЕМ mod_php - используем PHP-FPM!
|
||||
# Удаляем старые конфигурации PHP
|
||||
rm -f /etc/httpd/conf.d/php.conf
|
||||
# Отключаем старые конфигурации PHP и mod_php
|
||||
rm -f /etc/httpd/conf.d/php.conf /etc/httpd/conf.modules.d/*php*.conf
|
||||
|
||||
# Определяем, какой 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"
|
||||
SOCKET_PATH="/var/opt/remi/php83/run/php-fpm/www.sock"
|
||||
elif [ -f "/etc/php-fpm.d/www.conf" ]; then
|
||||
PHP_FPM_CONF="/etc/php-fpm.d/www.conf"
|
||||
PHP_FPM_SERVICE="php-fpm"
|
||||
SOCKET_PATH="/run/php-fpm/www.sock"
|
||||
else
|
||||
log_error "Не найден конфигурационный файл PHP-FPM"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Создаем конфигурацию только для PHP-FPM (без mod_php)
|
||||
cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
|
||||
# PHP-FPM configuration for Apache
|
||||
# НЕ загружаем mod_php - используем PHP-FPM через ProxyPass
|
||||
# ВАЖНО: НЕ загружаем mod_php - используем только PHP-FPM
|
||||
|
||||
# Включаем нужные модули (без mod_php)
|
||||
# Базовые модули Apache (проверяем, не загружены ли уже)
|
||||
<IfModule !mod_rewrite.c>
|
||||
LoadModule rewrite_module modules/mod_rewrite.so
|
||||
</IfModule>
|
||||
<IfModule !mod_headers.c>
|
||||
LoadModule headers_module modules/mod_headers.so
|
||||
</IfModule>
|
||||
<IfModule !mod_expires.c>
|
||||
LoadModule expires_module modules/mod_expires.so
|
||||
</IfModule>
|
||||
<IfModule !mod_deflate.c>
|
||||
LoadModule deflate_module modules/mod_deflate.so
|
||||
</IfModule>
|
||||
<IfModule !mod_proxy.c>
|
||||
LoadModule proxy_module modules/mod_proxy.so
|
||||
</IfModule>
|
||||
<IfModule !mod_proxy_fcgi.c>
|
||||
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
|
||||
|
||||
# Обработка PHP через PHP-FPM
|
||||
<FilesMatch \.php$>
|
||||
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
|
||||
</FilesMatch>
|
||||
|
||||
# Альтернативный способ через TCP (если Unix socket не работает)
|
||||
# <FilesMatch \.php$>
|
||||
# SetHandler "proxy:fcgi://127.0.0.1:9000"
|
||||
# </FilesMatch>
|
||||
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>
|
||||
|
||||
# Обработка PHP файлов через PHP-FPM
|
||||
<FilesMatch \.php$>
|
||||
SetHandler application/x-httpd-php
|
||||
SetHandler "proxy:unix:SOCKET_PATH_PLACEHOLDER|fcgi://localhost"
|
||||
</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
|
||||
# Настройки директивы для улучшения производительности
|
||||
ProxyTimeout 300
|
||||
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:SOCKET_PATH_PLACEHOLDER|fcgi://localhost/var/www/html/
|
||||
EOF
|
||||
|
||||
# Заменяем плейсхолдер на реальный путь к сокету
|
||||
sed -i "s|SOCKET_PATH_PLACEHOLDER|$SOCKET_PATH|g" "/etc/httpd/conf.d/php-fpm.conf"
|
||||
|
||||
log_info "Настройка PHP-FPM..."
|
||||
|
||||
# Создаем резервную копию конфигурации
|
||||
cp "$PHP_FPM_CONF" "${PHP_FPM_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
|
||||
|
||||
# Настраиваем PHP-FPM pool
|
||||
sed -i 's/;*listen = .*/listen = '"${SOCKET_PATH//\//\\/}"'/' "$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"
|
||||
|
||||
# Настраиваем производительность PHP-FPM
|
||||
sed -i 's/;*pm = .*/pm = dynamic/' "$PHP_FPM_CONF"
|
||||
sed -i 's/;*pm.max_children = .*/pm.max_children = 50/' "$PHP_FPM_CONF"
|
||||
sed -i 's/;*pm.start_servers = .*/pm.start_servers = 5/' "$PHP_FPM_CONF"
|
||||
sed -i 's/;*pm.min_spare_servers = .*/pm.min_spare_servers = 5/' "$PHP_FPM_CONF"
|
||||
sed -i 's/;*pm.max_spare_servers = .*/pm.max_spare_servers = 35/' "$PHP_FPM_CONF"
|
||||
|
||||
# Создаем директорию для socket
|
||||
SOCKET_DIR=$(dirname "$SOCKET_PATH")
|
||||
mkdir -p "$SOCKET_DIR"
|
||||
chown apache:apache "$SOCKET_DIR"
|
||||
|
||||
# Запускаем и включаем 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 не удалось запустить"
|
||||
systemctl status $PHP_FPM_SERVICE --no-pager -l
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_success "PHP-FPM настроен и запущен"
|
||||
fi
|
||||
|
||||
cat > "/etc/httpd/conf.d/altcor.conf" << 'EOF'
|
||||
# Altcor main configuration
|
||||
|
||||
# Отключаем ServerTokens и ServerSignature для безопасности
|
||||
# Отключаем информацию о сервере для безопасности
|
||||
ServerTokens Prod
|
||||
ServerSignature Off
|
||||
|
||||
@@ -523,34 +550,55 @@ ServerSignature Off
|
||||
# Настройки сжатия
|
||||
<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
|
||||
\.(?:gif|jpe?g|png|ico|exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
|
||||
# Исключаем старые браузеры
|
||||
SetEnvIfNoCase User-Agent "^Mozilla/4\.0[678]" no-gzip
|
||||
SetEnvIfNoCase User-Agent "^Mozilla/4\.[0678]" no-gzip
|
||||
SetEnvIfNoCase User-Agent "MSIE [1-6]\." no-gzip
|
||||
</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 image/webp "access plus 1 month"
|
||||
ExpiresByType image/ico "access plus 1 month"
|
||||
ExpiresByType image/x-icon "access plus 1 month"
|
||||
# CSS и JS
|
||||
ExpiresByType text/css "access plus 1 month"
|
||||
ExpiresByType application/javascript "access plus 1 month"
|
||||
ExpiresByType text/javascript "access plus 1 month"
|
||||
# Шрифты
|
||||
ExpiresByType font/woff "access plus 1 month"
|
||||
ExpiresByType font/woff2 "access plus 1 month"
|
||||
ExpiresByType font/ttf "access plus 1 month"
|
||||
ExpiresByType font/otf "access plus 1 month"
|
||||
# HTML и PHP - без кэширования
|
||||
ExpiresByType text/html "access plus 0 seconds"
|
||||
ExpiresByType application/x-httpd-php "access plus 0 seconds"
|
||||
</IfModule>
|
||||
|
||||
# Заголовки безопасности
|
||||
<IfModule mod_headers.c>
|
||||
Header always set X-Content-Type-Options nosniff
|
||||
Header always set X-Frame-Options DENY
|
||||
Header always set X-Frame-Options SAMEORIGIN
|
||||
Header always set X-XSS-Protection "1; mode=block"
|
||||
Header always set Referrer-Policy "strict-origin-when-cross-origin"
|
||||
# Добавляем заголовки кэширования для статических файлов
|
||||
<FilesMatch "\.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|otf)$">
|
||||
Header set Cache-Control "public, max-age=2592000"
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
</Directory>
|
||||
|
||||
# Запрет доступа к конфигурационным файлам
|
||||
# Запрет доступа к служебным файлам
|
||||
<Files "*.conf">
|
||||
Require all denied
|
||||
</Files>
|
||||
@@ -562,48 +610,43 @@ ServerSignature Off
|
||||
<Files ".env">
|
||||
Require all denied
|
||||
</Files>
|
||||
|
||||
<Files "*.log">
|
||||
Require all denied
|
||||
</Files>
|
||||
|
||||
# Запрет доступа к директориям .git и подобным
|
||||
<DirectoryMatch "^\.|\/\.">
|
||||
Require all denied
|
||||
</DirectoryMatch>
|
||||
|
||||
# Дополнительная защита от выполнения скриптов в uploads
|
||||
<Directory "/var/www/html/uploads">
|
||||
<Files "*.php">
|
||||
Require all denied
|
||||
</Files>
|
||||
<Files "*.phtml">
|
||||
Require all denied
|
||||
</Files>
|
||||
<Files "*.pl">
|
||||
Require all denied
|
||||
</Files>
|
||||
<Files "*.py">
|
||||
Require all denied
|
||||
</Files>
|
||||
<Files "*.jsp">
|
||||
Require all denied
|
||||
</Files>
|
||||
<Files "*.asp">
|
||||
Require all denied
|
||||
</Files>
|
||||
<Files "*.sh">
|
||||
Require all denied
|
||||
</Files>
|
||||
</Directory>
|
||||
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
|
||||
|
||||
# Настраиваем PHP-FPM pool
|
||||
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 настроен и запущен"
|
||||
log_success "Модули Apache настроены"
|
||||
|
||||
log_step "Создание конфигурации виртуального хоста..."
|
||||
|
||||
Reference in New Issue
Block a user