diff --git a/install.sh b/install.sh index 71216b7..9c40ad6 100644 --- a/install.sh +++ b/install.sh @@ -48,11 +48,9 @@ cleanup_apache_config() { if [ -f /etc/apache2/ports.conf ]; then cp /etc/apache2/ports.conf /etc/apache2/ports.conf.backup.$(date +%Y%m%d_%H%M%S) - # Удаляем все Listen директивы для порта 80 grep -v "^Listen\s\+.*:80$" /etc/apache2/ports.conf > /etc/apache2/ports.conf.tmp || true 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 @@ -63,34 +61,18 @@ cleanup_apache_config() { if [ -f "$HTTPD_CONF" ]; then cp "$HTTPD_CONF" "${HTTPD_CONF}.backup.$(date +%Y%m%d_%H%M%S)" - # Удаляем все Listen директивы для порта 80 grep -v "^Listen.*:80$" "$HTTPD_CONF" > "${HTTPD_CONF}.tmp" || true 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' - - SetHandler "proxy:fcgi://127.0.0.1:9000" - - -DirectoryIndex index.php index.html index.htm - - - Require all granted - -EOF - else - cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF' + cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF' SetHandler "proxy:unix:/var/opt/remi/php83/run/php-fpm/www.sock|fcgi://localhost" @@ -101,7 +83,6 @@ DirectoryIndex index.php index.html index.htm Require all granted EOF - fi fi fi @@ -142,7 +123,7 @@ check_existing_installation() { if [ -f "/var/www/html/db_config.php" ]; then if grep -q "ALTCor" "/var/www/html/db_config.php" 2>/dev/null && grep -q "DB_NAME" "/var/www/html/db_config.php" 2>/dev/null; then altcor_signs=$((altcor_signs + 1)) - log_info "✓ Найдена конфигурация БД Altcor" + log_info "Найдена конфигурация БД Altcor" fi fi @@ -152,7 +133,7 @@ check_existing_installation() { source "/root/.db_password" 2>/dev/null || true if [ -n "$DB_PASSWORD" ] && mysql -u root -p"$DB_PASSWORD" -e "USE ALTCor; SELECT 1;" >/dev/null 2>&1; then altcor_signs=$((altcor_signs + 1)) - log_info "✓ Найдена рабочая база данных ALTCor" + log_info "Найдена рабочая база данных ALTCor" fi fi fi @@ -163,7 +144,7 @@ check_existing_installation() { ! grep -q "phpinfo\|Сервер готов к работе\|PHP.*работает" "/var/www/html/index.php" 2>/dev/null && wc -l < "/var/www/html/index.php" > 50); then altcor_signs=$((altcor_signs + 1)) - log_info "✓ Найдены файлы приложения Altcor" + log_info "Найдены файлы приложения Altcor" fi fi @@ -233,9 +214,9 @@ check_existing_installation() { fi if [ "$altcor_installed" = true ]; then - echo -e "${GREEN}✓ ALTCOR УЖЕ УСТАНОВЛЕН${NC}" + log_error "Обнаружена рабочая установка Altcor, которая уже содержится в системе." echo "" - echo "Обнаружена рабочая установка Altcor со следующими компонентами:" + echo "Установлено следующее:" echo "" case $apache_status in @@ -303,7 +284,7 @@ check_existing_installation() { fi elif [ "$components_installed" = true ]; then - echo -e "${YELLOW}⚠ ОБНАРУЖЕНЫ СУЩЕСТВУЮЩИЕ ВЕБ-КОМПОНЕНТЫ${NC}" + log_warning "ОБНАРУЖЕНЫ СУЩЕСТВУЮЩИЕ ВЕБ-КОМПОНЕНТЫ" echo "" echo "На вашем сервере уже установлены следующие компоненты:" echo "" @@ -383,15 +364,7 @@ check_existing_installation() { fi else - echo -e "${GREEN}✓ СИСТЕМА ГОТОВА К УСТАНОВКЕ${NC}" - echo "" - echo "Компоненты для установки:" - echo "• Apache веб-сервер" - echo "• PHP 8.3" - echo "• MariaDB база данных" - echo "• Redis кеш-сервер" - echo "• LibreOffice" - echo "" + log_success "Система готова к установке Altcor" log_info "Начинаем чистую установку Altcor..." return 0 fi @@ -489,8 +462,8 @@ proceed_with_installation() { elif [ "$DISTRO_FAMILY" = "rhel" ]; then $PKG_MANAGER update -y >/dev/null 2>&1 $PKG_MANAGER install -y epel-release >/dev/null 2>&1 || true - $PKG_MANAGER install -y curl wget gnupg2 unzip >/dev/null 2>&1 - fi + $PKG_MANAGER install -y curl wget gnupg2 unzip openssl >/dev/null 2>&1 +fi log_success "Система обновлена, базовые пакеты установлены" log_step "Добавление репозиториев для PHP 8.3..." @@ -573,7 +546,7 @@ proceed_with_installation() { export DEBIAN_FRONTEND=noninteractive apt install -y redis-server libreoffice default-jre >/dev/null 2>&1 elif [ "$DISTRO_FAMILY" = "rhel" ]; then - $PKG_MANAGER install -y redis libreoffice + $PKG_MANAGER install -y redis libreoffice >/dev/null 2>&1 fi log_success "Дополнительные компоненты установлены" @@ -590,15 +563,9 @@ proceed_with_installation() { fi elif [ "$DISTRO_FAMILY" = "rhel" ]; then - if [ "$DISTRO" = "fedora" ]; then - 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-fpm" - else - PHP_PACKAGES="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 + PHP_PACKAGES="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" if ! $PKG_MANAGER install -y $PHP_PACKAGES >/dev/null 2>&1; then log_error "Не удалось установить PHP 8.3 и/или его расширения." @@ -614,61 +581,27 @@ proceed_with_installation() { log_step "Настройка Apache и модулей..." if [ "$DISTRO_FAMILY" = "debian" ]; then - a2enmod php8.3 rewrite ssl headers expires deflate >/dev/null 2>&1 - - for php_ver in 7.4 8.0 8.1 8.2; do - a2dismod php$php_ver >/dev/null 2>&1 || true - done - - WEBROOT="/var/www/html" - APACHE_CONF="/etc/apache2/sites-available/000-default.conf" - WEBSERVER_USER="www-data" + a2enmod php8.3 rewrite ssl headers expires deflate >/dev/null 2>&1 + + for php_ver in 7.4 8.0 8.1 8.2; do + a2dismod php$php_ver >/dev/null 2>&1 || true + done + + WEBROOT="/var/www/html" + APACHE_CONF="/etc/apache2/sites-available/000-default.conf" + WEBSERVER_USER="www-data" elif [ "$DISTRO_FAMILY" = "rhel" ]; then WEBROOT="/var/www/html" APACHE_CONF="/etc/httpd/conf.d/000-default.conf" WEBSERVER_USER="apache" - # Очищаем старые конфигурации rm -f /etc/httpd/conf.d/php.conf rm -f /etc/httpd/conf.d/php-fpm.conf log_info "Настройка PHP-FPM для Apache..." - if [ "$DISTRO" = "fedora" ]; then - # Для Fedora используем стандартный PHP-FPM без LoadModule директив - cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF' - - SetHandler "proxy:fcgi://127.0.0.1:9000" - - -DirectoryIndex index.php index.html index.htm - - - Require all granted - -EOF - - # Настраиваем стандартный 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 - - else - # Для CentOS/RHEL/AlmaLinux с Remi репозиторием - cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF' + cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF' SetHandler "proxy:unix:/var/opt/remi/php83/run/php-fpm/www.sock|fcgi://localhost" @@ -679,50 +612,40 @@ DirectoryIndex index.php index.html index.htm Require all granted 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" - 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 + cp "$PHP_FPM_CONF" "${PHP_FPM_CONF}.backup.$(date +%Y%m%d_%H%M%S)" - mkdir -p /var/opt/remi/php83/run/php-fpm - chown apache:apache /var/opt/remi/php83/run/php-fpm + 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/Fedora" fi - # Очищаем дублирующиеся Listen директивы + mkdir -p /var/opt/remi/php83/run/php-fpm + 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 - - # 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 "Создание конфигурации виртуального хоста..." @@ -833,41 +756,17 @@ EOF log_success "Конфигурация виртуального хоста создана" cleanup_apache_config - # log_step "Настройка Apache для прослушивания всех интерфейсов..." - # if [ "$DISTRO_FAMILY" = "debian" ]; then - # if ! grep -q "Listen.*:80" /etc/apache2/ports.conf; then - # echo "Listen *:80" >> /etc/apache2/ports.conf - # elif grep -q "Listen 127.0.0.1:80" /etc/apache2/ports.conf && ! grep -q "Listen \*:80\|Listen 0.0.0.0:80" /etc/apache2/ports.conf; then - # sed -i 's/Listen 127.0.0.1:80/Listen *:80/' /etc/apache2/ports.conf - # fi - # awk '!seen && /^Listen.*:80$/{seen=1; print "Listen *:80"; next} !/^Listen.*:80$/{print}' /etc/apache2/ports.conf > /etc/apache2/ports.conf.tmp && mv /etc/apache2/ports.conf.tmp /etc/apache2/ports.conf - - # elif [ "$DISTRO_FAMILY" = "rhel" ]; then - # HTTPD_CONF="/etc/httpd/conf/httpd.conf" - - # if ! grep -q "Listen.*:80" "$HTTPD_CONF"; then - # echo "Listen *:80" >> "$HTTPD_CONF" - # elif grep -q "Listen 127.0.0.1:80" "$HTTPD_CONF" && ! grep -q "Listen \*:80\|Listen 0.0.0.0:80" "$HTTPD_CONF"; then - # sed -i 's/Listen 127.0.0.1:80/Listen *:80/' "$HTTPD_CONF" - # fi - # awk '!seen && /^Listen.*:80$/{seen=1; print "Listen *:80"; next} !/^Listen.*:80$/{print}' "$HTTPD_CONF" > "$HTTPD_CONF.tmp" && mv "$HTTPD_CONF.tmp" "$HTTPD_CONF" - # fi - # log_success "Apache настроен для прослушивания всех интерфейсов" log_step "Настройка PHP.ini..." if [ "$DISTRO_FAMILY" = "debian" ]; then PHP_INI_PATH="/etc/php/8.3/apache2/php.ini" elif [ "$DISTRO_FAMILY" = "rhel" ]; then - if [ "$DISTRO" = "fedora" ]; then + if [ -f "/etc/opt/remi/php83/php.ini" ]; then + PHP_INI_PATH="/etc/opt/remi/php83/php.ini" + elif [ -f "/opt/remi/php83/root/etc/php.ini" ]; then + PHP_INI_PATH="/opt/remi/php83/root/etc/php.ini" + elif [ -f "/etc/php.ini" ]; then PHP_INI_PATH="/etc/php.ini" - else - if [ -f "/etc/opt/remi/php83/php.ini" ]; then - PHP_INI_PATH="/etc/opt/remi/php83/php.ini" - elif [ -f "/opt/remi/php83/root/etc/php.ini" ]; then - PHP_INI_PATH="/opt/remi/php83/root/etc/php.ini" - elif [ -f "/etc/php.ini" ]; then - PHP_INI_PATH="/etc/php.ini" - fi fi fi @@ -1267,19 +1166,17 @@ MYSQL_SCRIPT WEBSERVER_SERVICE="apache2" elif [ "$DISTRO_FAMILY" = "rhel" ]; then - if [ "$DISTRO" != "fedora" ]; then - log_info "Запуск PHP-FPM..." - systemctl stop php83-php-fpm >/dev/null 2>&1 || true - systemctl start php83-php-fpm >/dev/null 2>&1 - systemctl enable php83-php-fpm >/dev/null 2>&1 - - sleep 3 - - if ! systemctl is-active --quiet php83-php-fpm; then - log_error "PHP-FPM не запустился" - systemctl status php83-php-fpm --no-pager -l - exit 1 - fi + log_info "Запуск PHP-FPM..." + systemctl stop php83-php-fpm >/dev/null 2>&1 || true + systemctl start php83-php-fpm >/dev/null 2>&1 + systemctl enable php83-php-fpm >/dev/null 2>&1 + + sleep 3 + + if ! systemctl is-active --quiet php83-php-fpm; then + log_error "PHP-FPM не запустился" + systemctl status php83-php-fpm --no-pager -l + exit 1 fi systemctl restart httpd >/dev/null 2>&1 @@ -1333,7 +1230,7 @@ MYSQL_SCRIPT exit 1 fi - if [ "$DISTRO_FAMILY" = "rhel" ] && [ "$DISTRO" != "fedora" ]; then + if [ "$DISTRO_FAMILY" = "rhel" ]; then if ! systemctl is-active --quiet php83-php-fpm; then log_error "PHP-FPM не запущен" systemctl status php83-php-fpm --no-pager -l