Добавлена возможность переустановки

This commit is contained in:
2025-08-11 02:05:29 +03:00
parent b249e0ade8
commit db7ab6afe2

View File

@@ -4,16 +4,21 @@ clear
set -e
UNINSTALL=false
REINSTALL=false
while getopts ":u" opt; do
while getopts ":ur" opt; do
case $opt in
u)
UNINSTALL=true
;;
r)
REINSTALL=true
;;
\?)
echo -e "${RED}[Ошибка]${NC} Неизвестный параметр: -$OPTARG" >&2
echo "Использование: $0 [-u]"
echo "Использование: $0 [-u] [-r]"
echo " -u Полное удаление"
echo " -r Переустановка (удаление + установка)"
exit 1
;;
esac
@@ -157,22 +162,55 @@ check_existing_installation() {
echo ""
if [ "$need_reinstall" = false ] && [ "$apache_status" -eq 0 ] && [ "$php_status" -eq 0 ] && [ "$mariadb_status" -eq 0 ]; then
if [ "$REINSTALL" = true ]; then
log_warning "Обнаружена существующая установка. Начинаем переустановку..."
return 1
else
log_success "Все компоненты уже установлены и работают корректно"
echo ""
echo "Altcor уже установлен. Установка остановлена."
echo -e "${YELLOW}Altcor уже полностью установлен и функционирует.${NC}"
echo ""
read -p "Хотите переустановить систему? [y/n]: " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
log_info "Начинаем переустановку по запросу пользователя..."
REINSTALL=true
return 1
else
echo ""
log_info "Переустановка отменена. Система остается без изменений."
echo ""
echo "Для принудительной переустановки используйте: $0 -r"
echo ""
exit 0
fi
fi
else
log_info "Обнаружены отсутствующие или неработающие компоненты. Продолжаем установку..."
if [ "$need_reinstall" = true ]; then
log_warning "Обнаружены проблемы с установленными компонентами."
echo ""
read -p "Хотите переустановить всю систему? [y/n]: " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
log_info "Начинаем полную переустановку..."
REINSTALL=true
return 1
else
log_info "Продолжаем обычную установку/обновление компонентов..."
return 0
fi
else
log_info "Обнаружены отсутствующие компоненты. Продолжаем установку..."
return 0
fi
fi
}
full_uninstall() {
log_step "Начинаем полное удаление Altcor... :("
log_info "Остановка сервисов..."
systemctl stop nginx apache2 httpd php*-fpm mariadb mysql redis 2>/dev/null || true
systemctl stop nginx apache2 httpd php*-fpm mariadb mysql redis redis-server 2>/dev/null || true
log_info "Удаление пакетов..."
if [ "$DISTRO_FAMILY" = "debian" ]; then
@@ -196,43 +234,16 @@ full_uninstall() {
/root/.db_password 2>/dev/null || true
log_success "Полное удаление завершено."
if [ "$REINSTALL" = false ]; then
exit 0
else
log_info "Переустановка: удаление завершено, продолжаем установку..."
echo ""
fi
}
if [[ $EUID -ne 0 ]]; then
log_error "Запустите этот скрипт вместе с sudo."
exit 1
fi
if [ -f /etc/os-release ]; then
. /etc/os-release
DISTRO="$ID"
FAMILY="$ID_LIKE"
else
log_error "Не удалось определить дистрибутив."
exit 1
fi
if echo "$DISTRO $FAMILY" | grep -qi "debian\|ubuntu"; then
PKG_MANAGER="apt"
DISTRO_FAMILY="debian"
elif echo "$DISTRO $FAMILY" | grep -qi "rhel\|centos\|fedora"; then
PKG_MANAGER="dnf"
DISTRO_FAMILY="rhel"
if ! command -v dnf >/dev/null 2>&1; then
PKG_MANAGER="yum"
fi
else
log_error "Ваш дистрибутив '$DISTRO' не поддерживается. Поддерживаются: Debian/Ubuntu, CentOS/RHEL/Fedora."
exit 1
fi
if [ "$UNINSTALL" = true ]; then
full_uninstall
fi
check_existing_installation
proceed_with_installation() {
DB_PASSWORD=$(generate_password)
log_step "Остановка конфликтующих сервисов..."
@@ -913,7 +924,11 @@ log_info "Учетные данные сохранены в $DB_CREDENTIALS_FILE
IP_ADDR=$(hostname -I | awk '{print $1}')
echo ""
if [ "$REINSTALL" = true ]; then
log_success "Переустановка Altcor успешно завершена."
else
log_success "Установка Altcor успешно завершена."
fi
echo ""
echo " Доступ к сайту:"
echo " • http://localhost/"
@@ -933,4 +948,58 @@ echo ""
echo " Дополнительная информация:"
echo " • Учетные данные БД: $DB_CREDENTIALS_FILE"
echo " • Для удаления: ./install.sh -u"
echo " • Для переустановки: ./install.sh -r"
echo ""
}
if [[ $EUID -ne 0 ]]; then
log_error "Запустите этот скрипт вместе с sudo."
exit 1
fi
if [ -f /etc/os-release ]; then
. /etc/os-release
DISTRO="$ID"
FAMILY="$ID_LIKE"
else
log_error "Не удалось определить дистрибутив."
exit 1
fi
if echo "$DISTRO $FAMILY" | grep -qi "debian\|ubuntu"; then
PKG_MANAGER="apt"
DISTRO_FAMILY="debian"
elif echo "$DISTRO $FAMILY" | grep -qi "rhel\|centos\|fedora"; then
PKG_MANAGER="dnf"
DISTRO_FAMILY="rhel"
if ! command -v dnf >/dev/null 2>&1; then
PKG_MANAGER="yum"
fi
else
log_error "Ваш дистрибутив '$DISTRO' не поддерживается. Поддерживаются: Debian/Ubuntu, CentOS/RHEL/Fedora."
exit 1
fi
if [ "$UNINSTALL" = true ]; then
full_uninstall
elif [ "$REINSTALL" = true ]; then
echo ""
log_step "Начинаем переустановку Altcor..."
echo ""
full_uninstall
proceed_with_installation
else
check_result=0
check_existing_installation || check_result=$?
if [ $check_result -eq 1 ]; then
if [ "$REINSTALL" = true ]; then
full_uninstall
fi
proceed_with_installation
elif [ $check_result -eq 0 ]; then
proceed_with_installation
fi
fi