Фикс php-fpm

This commit is contained in:
2025-08-13 03:21:31 +03:00
parent b23eb8f5d6
commit e8501ea69b

View File

@@ -48,9 +48,14 @@ cleanup_apache_config() {
if [ -f /etc/apache2/ports.conf ]; then if [ -f /etc/apache2/ports.conf ]; then
cp /etc/apache2/ports.conf /etc/apache2/ports.conf.backup.$(date +%Y%m%d_%H%M%S) cp /etc/apache2/ports.conf /etc/apache2/ports.conf.backup.$(date +%Y%m%d_%H%M%S)
grep -v "^Listen\s\+.*80$" /etc/apache2/ports.conf > /etc/apache2/ports.conf.tmp || true # Удаляем все Listen директивы для порта 80
echo "Listen *:80" >> /etc/apache2/ports.conf.tmp grep -v "^Listen\s\+.*:80$" /etc/apache2/ports.conf > /etc/apache2/ports.conf.tmp || true
mv /etc/apache2/ports.conf.tmp /etc/apache2/ports.conf grep -v "^Listen\s\+80$" /etc/apache2/ports.conf.tmp > /etc/apache2/ports.conf.tmp2 || true
# Добавляем одну Listen директиву
echo "Listen *:80" >> /etc/apache2/ports.conf.tmp2
mv /etc/apache2/ports.conf.tmp2 /etc/apache2/ports.conf
rm -f /etc/apache2/ports.conf.tmp
fi fi
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
@@ -58,11 +63,49 @@ cleanup_apache_config() {
if [ -f "$HTTPD_CONF" ]; then if [ -f "$HTTPD_CONF" ]; then
cp "$HTTPD_CONF" "${HTTPD_CONF}.backup.$(date +%Y%m%d_%H%M%S)" cp "$HTTPD_CONF" "${HTTPD_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
grep -v "^Listen.*:80" "$HTTPD_CONF" > "${HTTPD_CONF}.tmp" || true # Удаляем все Listen директивы для порта 80
echo "Listen *:80" >> "${HTTPD_CONF}.tmp" grep -v "^Listen.*:80$" "$HTTPD_CONF" > "${HTTPD_CONF}.tmp" || true
mv "${HTTPD_CONF}.tmp" "$HTTPD_CONF" grep -v "^Listen 80$" "${HTTPD_CONF}.tmp" > "${HTTPD_CONF}.tmp2" || true
# Добавляем одну Listen директиву
echo "Listen 80" >> "${HTTPD_CONF}.tmp2"
mv "${HTTPD_CONF}.tmp2" "$HTTPD_CONF"
rm -f "${HTTPD_CONF}.tmp"
fi
# Также очищаем PHP-FPM конфигурацию от дублирующихся модулей
if [ -f "/etc/httpd/conf.d/php-fpm.conf" ]; then
log_info "Очистка PHP-FPM конфигурации от LoadModule директив..."
if [ "$DISTRO" = "fedora" ]; then
cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
DirectoryIndex index.php index.html index.htm
<Files "*.php">
Require all granted
</Files>
EOF
else
cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/opt/remi/php83/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
DirectoryIndex index.php index.html index.htm
<Files "*.php">
Require all granted
</Files>
EOF
fi
fi fi
fi fi
log_success "Конфигурация Apache очищена от дубликатов"
} }
check_component() { check_component() {
@@ -581,21 +624,20 @@ proceed_with_installation() {
APACHE_CONF="/etc/apache2/sites-available/000-default.conf" APACHE_CONF="/etc/apache2/sites-available/000-default.conf"
WEBSERVER_USER="www-data" WEBSERVER_USER="www-data"
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
WEBROOT="/var/www/html" WEBROOT="/var/www/html"
APACHE_CONF="/etc/httpd/conf.d/000-default.conf" APACHE_CONF="/etc/httpd/conf.d/000-default.conf"
WEBSERVER_USER="apache" WEBSERVER_USER="apache"
rm -f /etc/httpd/conf.d/php.conf # Очищаем старые конфигурации
rm -f /etc/httpd/conf.d/php.conf
log_info "Настройка PHP-FPM для Apache..." rm -f /etc/httpd/conf.d/php-fpm.conf
if [ "$DISTRO" = "fedora" ]; then log_info "Настройка PHP-FPM для Apache..."
cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
LoadModule proxy_module modules/mod_proxy.so if [ "$DISTRO" = "fedora" ]; then
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so # Для Fedora используем стандартный PHP-FPM без LoadModule директив
LoadModule rewrite_module modules/mod_rewrite.so cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
<FilesMatch \.php$> <FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000" SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch> </FilesMatch>
@@ -606,28 +648,27 @@ DirectoryIndex index.php index.html index.htm
Require all granted Require all granted
</Files> </Files>
EOF EOF
if [ -f "/etc/php-fpm.d/www.conf" ]; then
PHP_FPM_CONF="/etc/php-fpm.d/www.conf"
cp "$PHP_FPM_CONF" "${PHP_FPM_CONF}.backup.$(date +%Y%m%d_%H%M%S)" # Настраиваем стандартный PHP-FPM для Fedora
if [ -f "/etc/php-fpm.d/www.conf" ]; then
PHP_FPM_CONF="/etc/php-fpm.d/www.conf"
cp "$PHP_FPM_CONF" "${PHP_FPM_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
sed -i 's/^user = .*/user = apache/' "$PHP_FPM_CONF"
sed -i 's/^group = .*/group = apache/' "$PHP_FPM_CONF"
sed -i 's/^listen = .*/listen = 127.0.0.1:9000/' "$PHP_FPM_CONF"
log_info "PHP-FPM пул настроен для Fedora"
# Запускаем и включаем PHP-FPM
systemctl enable php-fpm >/dev/null 2>&1
systemctl start php-fpm >/dev/null 2>&1
fi
sed -i 's/^user = .*/user = apache/' "$PHP_FPM_CONF" else
sed -i 's/^group = .*/group = apache/' "$PHP_FPM_CONF" # Для CentOS/RHEL/AlmaLinux с Remi репозиторием
sed -i 's/^listen = .*/listen = 127.0.0.1:9000/' "$PHP_FPM_CONF" cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
log_info "PHP-FPM пул настроен для Fedora"
systemctl enable php-fpm >/dev/null 2>&1
systemctl start php-fpm >/dev/null 2>&1
fi
else
cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule rewrite_module modules/mod_rewrite.so
<FilesMatch \.php$> <FilesMatch \.php$>
SetHandler "proxy:unix:/var/opt/remi/php83/run/php-fpm/www.sock|fcgi://localhost" SetHandler "proxy:unix:/var/opt/remi/php83/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch> </FilesMatch>
@@ -638,31 +679,54 @@ DirectoryIndex index.php index.html index.htm
Require all granted Require all granted
</Files> </Files>
EOF EOF
if [ -f "/etc/opt/remi/php83/php-fpm.d/www.conf" ]; then
PHP_FPM_CONF="/etc/opt/remi/php83/php-fpm.d/www.conf"
cp "$PHP_FPM_CONF" "${PHP_FPM_CONF}.backup.$(date +%Y%m%d_%H%M%S)" if [ -f "/etc/opt/remi/php83/php-fpm.d/www.conf" ]; then
PHP_FPM_CONF="/etc/opt/remi/php83/php-fpm.d/www.conf"
cp "$PHP_FPM_CONF" "${PHP_FPM_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
sed -i 's/^user = .*/user = apache/' "$PHP_FPM_CONF"
sed -i 's/^group = .*/group = apache/' "$PHP_FPM_CONF"
sed -i 's/^listen = .*/listen = \/var\/opt\/remi\/php83\/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"
log_info "PHP-FPM пул настроен для RHEL/CentOS"
fi
sed -i 's/^user = .*/user = apache/' "$PHP_FPM_CONF" mkdir -p /var/opt/remi/php83/run/php-fpm
sed -i 's/^group = .*/group = apache/' "$PHP_FPM_CONF" chown apache:apache /var/opt/remi/php83/run/php-fpm
sed -i 's/^listen = .*/listen = \/var\/opt\/remi\/php83\/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"
log_info "PHP-FPM пул настроен для RHEL/CentOS"
fi fi
mkdir -p /var/opt/remi/php83/run/php-fpm # Очищаем дублирующиеся Listen директивы
chown apache:apache /var/opt/remi/php83/run/php-fpm HTTPD_CONF="/etc/httpd/conf/httpd.conf"
log_step "Очистка дублирующихся Listen директив..."
# Создаем резервную копию
cp "$HTTPD_CONF" "${HTTPD_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
# Удаляем все существующие Listen директивы для порта 80
sed -i '/^Listen.*:80$/d' "$HTTPD_CONF"
sed -i '/^Listen 80$/d' "$HTTPD_CONF"
# Добавляем только одну Listen директиву в конец файла
if ! grep -q "^Listen 80$" "$HTTPD_CONF"; then
echo "Listen 80" >> "$HTTPD_CONF"
fi
log_success "Listen директивы очищены"
fi fi
fi
log_success "Модули Apache настроены" # mkdir -p /var/opt/remi/php83/run/php-fpm
# chown apache:apache /var/opt/remi/php83/run/php-fpm
# fi
# fi
log_success "Модули Apache настроены"
log_step "Создание конфигурации виртуального хоста..." log_step "Создание конфигурации виртуального хоста..."
mkdir -p "$WEBROOT" mkdir -p "$WEBROOT"
SERVER_IP=$(hostname -I | awk '{print $1}') SERVER_IP=$(hostname -I | awk '{print $1}')
@@ -1169,19 +1233,22 @@ MYSQL_SCRIPT
log_step "Проверка конфигурации Apache..." log_step "Проверка конфигурации Apache..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
if ! apache2ctl configtest >/dev/null 2>&1; then if apache2ctl configtest >/dev/null 2>&1; then
log_error "Конфигурация Apache содержит ошибки." log_success "Конфигурация Apache корректна"
else
log_error "Ошибка в конфигурации Apache"
apache2ctl configtest apache2ctl configtest
exit 1 return 1
fi fi
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
if ! httpd -t >/dev/null 2>&1; then if httpd -t >/dev/null 2>&1; then
log_error "Конфигурация Apache (httpd) содержит ошибки." log_success "Конфигурация Apache корректна"
else
log_error "Ошибка в конфигурации Apache"
httpd -t httpd -t
exit 1 return 1
fi fi
fi fi
log_success "Конфигурация Apache проверена"
log_step "Запуск и включение сервисов..." log_step "Запуск и включение сервисов..."