#!/bin/bash
# 40-configs.sh — раскладка конфигов nginx / Apache / php-fpm / MariaDB на свежей el9.
# Принцип: восстанавливаем НАШИ конфиги, но НЕ трогаем version-specific módule-конфиги el9
# (conf.modules.d httpd и т.п.), чтобы не словить несовместимость 2.4.6 -> 2.4.62.
set -euo pipefail
cd "$(dirname "$0")"; source ./env.sh
need_root

############################ NGINX ############################
log "nginx"
# главный конфиг + bx/ + ssl/ + maps/settings — всё наше
cp -af "$CONFIGS/nginx/nginx.conf" /etc/nginx/nginx.conf
cp -af "$CONFIGS/nginx/mime.types" "$CONFIGS/nginx/fastcgi_params" "$CONFIGS/nginx/scgi_params" "$CONFIGS/nginx/uwsgi_params" /etc/nginx/ 2>/dev/null || true
cp -af "$CONFIGS/nginx/koi-utf" "$CONFIGS/nginx/koi-win" "$CONFIGS/nginx/win-utf" /etc/nginx/ 2>/dev/null || true
rm -rf /etc/nginx/bx; cp -af "$CONFIGS/nginx/bx" /etc/nginx/bx
cp -af "$CONFIGS/nginx/ssl" /etc/nginx/ssl 2>/dev/null || true
# дефолтный conf.d/default.conf официального nginx убираем (мешает default_server)
rm -f /etc/nginx/conf.d/default.conf
# nginx работает под apache (как в nginx.conf user apache;) — каталоги под него
mkdir -p /var/cache/nginx /var/log/nginx
chown -R apache:apache /var/cache/nginx
chown apache:adm /var/log/nginx 2>/dev/null || chown apache:apache /var/log/nginx
nginx -t && ok "nginx -t OK" || die "nginx конфиг невалиден — разбирайся до старта"

############################ APACHE ############################
log "Apache httpd"
cp -af "$CONFIGS/httpd/conf/httpd.conf" /etc/httpd/conf/httpd.conf
# bx/ целиком (vhost мультисайта, php-роутер, mod_remoteip, env). IfModule-блоки для geoip/rpaf безопасны.
rm -rf /etc/httpd/bx; cp -af "$CONFIGS/httpd/bx" /etc/httpd/bx
# наш php.conf (mod_php-блок инертен, php идёт через fpm)
cp -af "$CONFIGS/httpd/conf.d/php.conf" /etc/httpd/conf.d/php.conf 2>/dev/null || true
# ВАЖНО: ssl.conf НЕ переносим (mod_ssl не ставили, TLS на nginx) + гасим дефолтную welcome-страницу
rm -f /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/welcome.conf
# geoip на el9 нет — на всякий случай уберём ссылки на legacy mod_geoip из bx/conf (блок IfModule и так не сработает)
# (оставляем как есть — <IfModule mod_geoip.c> просто не выполнится)
/usr/sbin/httpd -t 2>&1 | grep -qiE "Syntax OK" && ok "httpd -t OK" || { /usr/sbin/httpd -t; die "httpd конфиг невалиден"; }

############################ PHP-FPM 8.2 ############################
log "php-fpm 8.2"
# 99-bitrix.ini — основные настройки (memory_limit, upload, opcache, session path, TZ, short_open_tag)
cp -af "$CONFIGS/php82/php.d/99-bitrix.ini" /etc/opt/remi/php82/php.d/99-bitrix.ini
# пул www: listen 9082, user/group apache
cp -af "$CONFIGS/php82/php-fpm.d/www.conf" /etc/opt/remi/php82/php-fpm.d/www.conf
# единый каталог сессий (как требует 99-bitrix.ini: /var/lib/php/session)
mkdir -p /var/lib/php/session /var/lib/php/wsdlcache /var/lib/php/opcache
chown -R apache:apache /var/lib/php/session /var/lib/php/wsdlcache /var/lib/php/opcache
chmod 770 /var/lib/php/session
$PHP_BIN -v >/dev/null && ok "php82 ok"

############################ MARIADB ############################
log "MariaDB конфиг"
cp -af "$CONFIGS/mariadb/my.cnf.d/z9_bitrix.cnf" /etc/my.cnf.d/z9_bitrix.cnf
# server.cnf обычно дефолтный — не перетираем стоковый el9, только bitrix-тюнинг (z9_bitrix.cnf).
warn "Проверь z9_bitrix.cnf под 10.11: innodb_buffer_pool_size=4096M подгони под RAM нового сервера (~50-60%)."
warn "Если mysqld не стартует из-за устаревшей директивы — закомментируй её и перезапусти (см. RUNBOOK)."

ok "Конфиги разложены. Сервисы запустим в 90-services.sh (после БД/SSL/SELinux). Дальше: (данные) 50-database.sh или 60-ssl.sh"
