Удалена возможность переустановки, только удаление

This commit is contained in:
2025-08-11 01:45:51 +03:00
parent 11934f53d8
commit e1a01c7b39

View File

@@ -4,21 +4,16 @@ clear
set -e set -e
UNINSTALL=false UNINSTALL=false
FORCE_REINSTALL=false
while getopts ":uf" opt; do while getopts ":u" opt; do
case $opt in case $opt in
u) u)
UNINSTALL=true UNINSTALL=true
;; ;;
f)
FORCE_REINSTALL=true
;;
\?) \?)
echo -e "${RED}[Ошибка]${NC} Неизвестный параметр: -$OPTARG" >&2 echo -e "${RED}[Ошибка]${NC} Неизвестный параметр: -$OPTARG" >&2
echo "Использование: $0 [-u] [-f]" echo "Использование: $0 [-u]"
echo " -u Полное удаление" echo " -u Полное удаление"
echo " -f Принудительная переустановка"
exit 1 exit 1
;; ;;
esac esac
@@ -162,49 +157,27 @@ check_existing_installation() {
echo "" echo ""
if [ "$need_reinstall" = false ] && [ "$apache_status" -eq 0 ] && [ "$php_status" -eq 0 ] && [ "$mariadb_status" -eq 0 ]; then if [ "$need_reinstall" = false ] && [ "$apache_status" -eq 0 ] && [ "$php_status" -eq 0 ] && [ "$mariadb_status" -eq 0 ]; then
log_success "Все компоненты уже установлены и работают корректно" log_success "Все компоненты уже установлены и работают корректно"
echo "" echo ""
echo "Altcor уже установлен. Установка остановлена."
if [ "$FORCE_REINSTALL" = false ]; then echo ""
echo "Система уже настроена и работает."
echo "" IP_ADDR=$(hostname -I | awk '{print $1}')
read -p "Выполнить полную переустановку? [y/n]: " choice if [ -f "/root/.db_password" ]; then
EXISTING_PASSWORD=$(grep "DB_PASSWORD=" /root/.db_password | cut -d'=' -f2)
case $choice in
[Yy]|[Yy][Ee][Ss])
log_info "Начинаем полную переустановку..."
return 0
;;
[Nn]|[Nn][Oo])
log_info "Переустановка отменена."
IP_ADDR=$(hostname -I | awk '{print $1}')
if [ -f "/root/.db_password" ]; then
EXISTING_PASSWORD=$(grep "DB_PASSWORD=" /root/.db_password | cut -d'=' -f2)
else
EXISTING_PASSWORD="(не найден в /root/.db_password)"
fi
echo ""
echo "🌐 Доступ к сайту:"
echo " • http://localhost/"
echo " • http://$IP_ADDR/"
echo ""
echo "🗄️ Доступ к БД:"
echo " • Логин: root"
echo " • Пароль: $EXISTING_PASSWORD"
echo ""
exit 0
;;
*)
log_info "Неверный ввод. Переустановка отменена."
exit 0
;;
esac
else else
log_info "Форсируем переустановку всех компонентов..." EXISTING_PASSWORD="(не найден в /root/.db_password)"
return 0
fi fi
echo "🌐 Доступ к сайту:"
echo " • http://localhost/"
echo " • http://$IP_ADDR/"
echo ""
echo "🗄️ Доступ к БД:"
echo " • Логин: root"
echo " • Пароль: $EXISTING_PASSWORD"
echo ""
exit 0
else else
log_info "Обнаружены отсутствующие или неработающие компоненты. Продолжаем установку..." log_info "Обнаружены отсутствующие или неработающие компоненты. Продолжаем установку..."
return 0 return 0
@@ -275,166 +248,155 @@ if [ "$UNINSTALL" = true ]; then
fi fi
check_existing_installation check_existing_installation
INSTALL_TYPE=$?
if [ "$INSTALL_TYPE" -eq 1 ]; then
SKIP_PACKAGE_INSTALL=true
else
SKIP_PACKAGE_INSTALL=false
fi
DB_PASSWORD=$(generate_password) DB_PASSWORD=$(generate_password)
if [ "$SKIP_PACKAGE_INSTALL" = false ]; then log_step "Остановка конфликтующих сервисов..."
log_step "Остановка конфликтующих сервисов..." systemctl stop nginx httpd apache2 php*-fpm mariadb mysql 2>/dev/null || true
systemctl stop nginx httpd apache2 php*-fpm mariadb mysql 2>/dev/null || true systemctl disable nginx httpd 2>/dev/null || true
systemctl disable nginx httpd 2>/dev/null || true
log_info "Ожидание полной остановки служб..." log_info "Ожидание полной остановки служб..."
sleep 3 sleep 3
echo "" echo ""
echo "Начинаем установку Altcor..." echo "Начинаем установку Altcor..."
echo "" echo ""
log_step "Удаление старых версий пакетов..." log_step "Удаление старых версий пакетов..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
apt remove -y nginx nginx-common nginx-core >/dev/null 2>&1 || true apt remove -y nginx nginx-common nginx-core >/dev/null 2>&1 || true
apt remove -y php7.* php8.0* php8.1* php8.2* libapache2-mod-php7.* libapache2-mod-php8.0* libapache2-mod-php8.1* libapache2-mod-php8.2* >/dev/null 2>&1 || true apt remove -y php7.* php8.0* php8.1* php8.2* libapache2-mod-php7.* libapache2-mod-php8.0* libapache2-mod-php8.1* libapache2-mod-php8.2* >/dev/null 2>&1 || true
env DEBIAN_FRONTEND=noninteractive apt remove --purge -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" mariadb* mysql* </dev/null >/dev/null 2>&1 || true env DEBIAN_FRONTEND=noninteractive apt remove --purge -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" mariadb* mysql* </dev/null >/dev/null 2>&1 || true
apt autoremove -y >/dev/null 2>&1 || true apt autoremove -y >/dev/null 2>&1 || true
rm -rf /var/lib/mysql* /etc/mysql* /var/log/mysql* 2>/dev/null || true rm -rf /var/lib/mysql* /etc/mysql* /var/log/mysql* 2>/dev/null || true
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER remove -y nginx >/dev/null 2>&1 || true $PKG_MANAGER remove -y nginx >/dev/null 2>&1 || true
$PKG_MANAGER remove -y php php7* php80* php81* php82* >/dev/null 2>&1 || true $PKG_MANAGER remove -y php php7* php80* php81* php82* >/dev/null 2>&1 || true
$PKG_MANAGER remove -y mariadb* mysql* >/dev/null 2>&1 || true $PKG_MANAGER remove -y mariadb* mysql* >/dev/null 2>&1 || true
rm -rf /var/lib/mysql* /etc/my.cnf* /var/log/mysql* 2>/dev/null || true rm -rf /var/lib/mysql* /etc/my.cnf* /var/log/mysql* 2>/dev/null || true
fi fi
log_success "Старые пакеты удалены" log_success "Старые пакеты удалены"
log_step "Обновление списка пакетов..." log_step "Обновление списка пакетов..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
apt update -y >/dev/null 2>&1 apt update -y >/dev/null 2>&1
apt install -y software-properties-common lsb-release ca-certificates curl wget gnupg2 apt-transport-https unzip >/dev/null 2>&1 apt install -y software-properties-common lsb-release ca-certificates curl wget gnupg2 apt-transport-https unzip >/dev/null 2>&1
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER update -y >/dev/null 2>&1 $PKG_MANAGER update -y >/dev/null 2>&1
$PKG_MANAGER install -y epel-release >/dev/null 2>&1 || true $PKG_MANAGER install -y epel-release >/dev/null 2>&1 || true
$PKG_MANAGER install -y curl wget gnupg2 unzip >/dev/null 2>&1 $PKG_MANAGER install -y curl wget gnupg2 unzip >/dev/null 2>&1
fi fi
log_success "Система обновлена, базовые пакеты установлены" log_success "Система обновлена, базовые пакеты установлены"
log_step "Добавление репозиториев для PHP 8.3..." log_step "Добавление репозиториев для PHP 8.3..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
if ! apt-cache show php8.3 &>/dev/null; then if ! apt-cache show php8.3 &>/dev/null; then
log_info "Добавление PPA ondrej/php..." log_info "Добавление PPA ondrej/php..."
if ! add-apt-repository ppa:ondrej/php -y >/dev/null 2>&1; then if ! add-apt-repository ppa:ondrej/php -y >/dev/null 2>&1; then
log_error "Не удалось добавить PPA ondrej/php." log_error "Не удалось добавить PPA ondrej/php."
exit 1
fi
apt update -y >/dev/null 2>&1
if ! apt-cache show php8.3 &>/dev/null; then
log_error "PHP 8.3 все еще недоступен после добавления PPA."
exit 1
fi
log_success "PPA добавлен успешно"
else
log_success "PHP 8.3 уже доступен в репозиториях"
fi
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
log_info "Добавление репозитория Remi..."
if [ "$DISTRO" = "fedora" ]; then
$PKG_MANAGER install -y https://rpms.remirepo.net/fedora/remi-release-$(rpm -E %fedora).rpm >/dev/null 2>&1 || true
else
$PKG_MANAGER install -y https://rpms.remirepo.net/enterprise/remi-release-$(rpm -E %rhel).rpm >/dev/null 2>&1 || true
fi
if command -v dnf >/dev/null 2>&1; then
dnf module reset php -y >/dev/null 2>&1 || true
dnf module enable php:remi-8.3 -y >/dev/null 2>&1 || true
fi
if ! $PKG_MANAGER list available php83* php8.3* >/dev/null 2>&1; then
log_error "PHP 8.3 недоступен в репозиториях."
exit 1 exit 1
fi fi
log_success "Репозиторий Remi добавлен успешно"
apt update -y >/dev/null 2>&1
if ! apt-cache show php8.3 &>/dev/null; then
log_error "PHP 8.3 все еще недоступен после добавления PPA."
exit 1
fi
log_success "PPA добавлен успешно"
else
log_success "PHP 8.3 уже доступен в репозиториях"
fi fi
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
log_info "Добавление репозитория Remi..."
if [ "$DISTRO" = "fedora" ]; then
$PKG_MANAGER install -y https://rpms.remirepo.net/fedora/remi-release-$(rpm -E %fedora).rpm >/dev/null 2>&1 || true
else
$PKG_MANAGER install -y https://rpms.remirepo.net/enterprise/remi-release-$(rpm -E %rhel).rpm >/dev/null 2>&1 || true
fi
if command -v dnf >/dev/null 2>&1; then
dnf module reset php -y >/dev/null 2>&1 || true
dnf module enable php:remi-8.3 -y >/dev/null 2>&1 || true
fi
if ! $PKG_MANAGER list available php83* php8.3* >/dev/null 2>&1; then
log_error "PHP 8.3 недоступен в репозиториях."
exit 1
fi
log_success "Репозиторий Remi добавлен успешно"
fi
log_step "Установка Apache..." log_step "Установка Apache..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
apt install -y apache2 >/dev/null 2>&1 apt install -y apache2 >/dev/null 2>&1
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER install -y httpd >/dev/null 2>&1 $PKG_MANAGER install -y httpd >/dev/null 2>&1
fi fi
log_success "Apache установлен" log_success "Apache установлен"
log_step "Установка MariaDB..." log_step "Установка MariaDB..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
apt install -y mariadb-server >/dev/null 2>&1 apt install -y mariadb-server >/dev/null 2>&1
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER install -y mariadb-server >/dev/null 2>&1 $PKG_MANAGER install -y mariadb-server >/dev/null 2>&1
fi fi
log_info "Запуск MariaDB..."
systemctl start mariadb >/dev/null 2>&1
systemctl enable mariadb >/dev/null 2>&1
log_info "Ожидание полного запуска MariaDB..."
sleep 5
if ! systemctl is-active --quiet mariadb; then
log_error "MariaDB не смог запуститься"
exit 1
fi
log_success "MariaDB установлен и запущен"
log_step "Установка дополнительных компонентов (Redis, LibreOffice, Java)..."
if [ "$DISTRO_FAMILY" = "debian" ]; then
apt install -y redis-server libreoffice default-jre >/dev/null 2>&1
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER install -y redis libreoffice java-11-openjdk >/dev/null 2>&1
fi
log_success "Дополнительные компоненты установлены"
log_step "Установка PHP 8.3 и расширений..."
if [ "$DISTRO_FAMILY" = "debian" ]; then
PHP_PACKAGES="php8.3 php8.3-cli php8.3-common php8.3-mysql php8.3-curl php8.3-gd \
php8.3-mbstring php8.3-xml php8.3-zip php8.3-opcache php8.3-intl \
php8.3-bcmath libapache2-mod-php8.3"
log_info "Запуск MariaDB..." if ! apt install -y $PHP_PACKAGES >/dev/null 2>&1; then
systemctl start mariadb >/dev/null 2>&1 log_error "Не удалось установить PHP 8.3 и/или его расширения."
systemctl enable mariadb >/dev/null 2>&1
log_info "Ожидание полного запуска MariaDB..."
sleep 5
if ! systemctl is-active --quiet mariadb; then
log_error "MariaDB не смог запуститься"
exit 1 exit 1
fi fi
log_success "MariaDB установлен и запущен" elif [ "$DISTRO_FAMILY" = "rhel" ]; then
if [ "$DISTRO" = "fedora" ]; then
log_step "Установка дополнительных компонентов (Redis, LibreOffice, Java)..." PHP_PACKAGES="php php-cli php-common php-mysqlnd php-curl php-gd \
if [ "$DISTRO_FAMILY" = "debian" ]; then php-mbstring php-xml php-zip php-opcache php-intl \
apt install -y redis-server libreoffice default-jre >/dev/null 2>&1 php-bcmath"
elif [ "$DISTRO_FAMILY" = "rhel" ]; then else
$PKG_MANAGER install -y redis libreoffice java-11-openjdk >/dev/null 2>&1 PHP_PACKAGES="php83 php83-php 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"
fi fi
log_success "Дополнительные компоненты установлены"
if ! $PKG_MANAGER install -y $PHP_PACKAGES >/dev/null 2>&1; then
log_step "Установка PHP 8.3 и расширений..." log_error "Не удалось установить PHP 8.3 и/или его расширения."
if [ "$DISTRO_FAMILY" = "debian" ]; then exit 1
PHP_PACKAGES="php8.3 php8.3-cli php8.3-common php8.3-mysql php8.3-curl php8.3-gd \ fi
php8.3-mbstring php8.3-xml php8.3-zip php8.3-opcache php8.3-intl \
php8.3-bcmath libapache2-mod-php8.3" if command -v php83 >/dev/null 2>&1 && [ ! -f /usr/bin/php ]; then
ln -sf /usr/bin/php83 /usr/bin/php >/dev/null 2>&1 || true
if ! apt install -y $PHP_PACKAGES >/dev/null 2>&1; then
log_error "Не удалось установить PHP 8.3 и/или его расширения."
exit 1
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"
else
PHP_PACKAGES="php83 php83-php 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"
fi
if ! $PKG_MANAGER install -y $PHP_PACKAGES >/dev/null 2>&1; then
log_error "Не удалось установить PHP 8.3 и/или его расширения."
exit 1
fi
if command -v php83 >/dev/null 2>&1 && [ ! -f /usr/bin/php ]; then
ln -sf /usr/bin/php83 /usr/bin/php >/dev/null 2>&1 || true
fi
fi fi
log_success "PHP 8.3 и расширения установлены"
else
log_info "Пропускаем установку пакетов (используем существующие)"
fi fi
log_success "PHP 8.3 и расширения установлены"
log_step "Настройка Apache и модулей..." log_step "Настройка Apache и модулей..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
@@ -698,6 +660,10 @@ if (file_exists(__DIR__ . '/db_config.php') && is_readable(__DIR__ . '/db_config
echo "<strong>Не удалось загрузить конфигурацию БД</strong>"; echo "<strong>Не удалось загрузить конфигурацию БД</strong>";
echo "</div>"; echo "</div>";
} }
echo "</div>";
echo "</body>";
echo "</html>";
EOF EOF
} }
@@ -991,6 +957,5 @@ echo " • Логи Apache: /var/log/apache2/ или /var/log/httpd/"
echo "" echo ""
echo " Дополнительная информация:" echo " Дополнительная информация:"
echo " • Учетные данные БД: $DB_CREDENTIALS_FILE" echo " • Учетные данные БД: $DB_CREDENTIALS_FILE"
echo " • Для переустановки: ./install.sh -f"
echo " • Для удаления: ./install.sh -u" echo " • Для удаления: ./install.sh -u"
echo "" echo ""