Добавлена возможность переустановки
This commit is contained in:
147
install.sh
147
install.sh
@@ -4,16 +4,21 @@ clear
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
UNINSTALL=false
|
UNINSTALL=false
|
||||||
|
REINSTALL=false
|
||||||
|
|
||||||
while getopts ":u" opt; do
|
while getopts ":ur" opt; do
|
||||||
case $opt in
|
case $opt in
|
||||||
u)
|
u)
|
||||||
UNINSTALL=true
|
UNINSTALL=true
|
||||||
;;
|
;;
|
||||||
|
r)
|
||||||
|
REINSTALL=true
|
||||||
|
;;
|
||||||
\?)
|
\?)
|
||||||
echo -e "${RED}[Ошибка]${NC} Неизвестный параметр: -$OPTARG" >&2
|
echo -e "${RED}[Ошибка]${NC} Неизвестный параметр: -$OPTARG" >&2
|
||||||
echo "Использование: $0 [-u]"
|
echo "Использование: $0 [-u] [-r]"
|
||||||
echo " -u Полное удаление"
|
echo " -u Полное удаление"
|
||||||
|
echo " -r Переустановка (удаление + установка)"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -157,22 +162,55 @@ 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
|
||||||
|
if [ "$REINSTALL" = true ]; then
|
||||||
|
log_warning "Обнаружена существующая установка. Начинаем переустановку..."
|
||||||
|
return 1
|
||||||
|
else
|
||||||
log_success "Все компоненты уже установлены и работают корректно"
|
log_success "Все компоненты уже установлены и работают корректно"
|
||||||
echo ""
|
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 ""
|
echo ""
|
||||||
exit 0
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
else
|
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
|
return 0
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
log_info "Обнаружены отсутствующие компоненты. Продолжаем установку..."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
full_uninstall() {
|
full_uninstall() {
|
||||||
log_step "Начинаем полное удаление Altcor... :("
|
log_step "Начинаем полное удаление Altcor... :("
|
||||||
|
|
||||||
log_info "Остановка сервисов..."
|
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 "Удаление пакетов..."
|
log_info "Удаление пакетов..."
|
||||||
if [ "$DISTRO_FAMILY" = "debian" ]; then
|
if [ "$DISTRO_FAMILY" = "debian" ]; then
|
||||||
@@ -196,43 +234,16 @@ full_uninstall() {
|
|||||||
/root/.db_password 2>/dev/null || true
|
/root/.db_password 2>/dev/null || true
|
||||||
|
|
||||||
log_success "Полное удаление завершено."
|
log_success "Полное удаление завершено."
|
||||||
|
|
||||||
|
if [ "$REINSTALL" = false ]; then
|
||||||
exit 0
|
exit 0
|
||||||
|
else
|
||||||
|
log_info "Переустановка: удаление завершено, продолжаем установку..."
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ $EUID -ne 0 ]]; then
|
proceed_with_installation() {
|
||||||
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
|
|
||||||
|
|
||||||
DB_PASSWORD=$(generate_password)
|
DB_PASSWORD=$(generate_password)
|
||||||
|
|
||||||
log_step "Остановка конфликтующих сервисов..."
|
log_step "Остановка конфликтующих сервисов..."
|
||||||
@@ -913,7 +924,11 @@ log_info "Учетные данные сохранены в $DB_CREDENTIALS_FILE
|
|||||||
IP_ADDR=$(hostname -I | awk '{print $1}')
|
IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
if [ "$REINSTALL" = true ]; then
|
||||||
|
log_success "Переустановка Altcor успешно завершена."
|
||||||
|
else
|
||||||
log_success "Установка Altcor успешно завершена."
|
log_success "Установка Altcor успешно завершена."
|
||||||
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
echo " Доступ к сайту:"
|
echo " Доступ к сайту:"
|
||||||
echo " • http://localhost/"
|
echo " • http://localhost/"
|
||||||
@@ -933,4 +948,58 @@ echo ""
|
|||||||
echo " Дополнительная информация:"
|
echo " Дополнительная информация:"
|
||||||
echo " • Учетные данные БД: $DB_CREDENTIALS_FILE"
|
echo " • Учетные данные БД: $DB_CREDENTIALS_FILE"
|
||||||
echo " • Для удаления: ./install.sh -u"
|
echo " • Для удаления: ./install.sh -u"
|
||||||
|
echo " • Для переустановки: ./install.sh -r"
|
||||||
echo ""
|
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
|
||||||
Reference in New Issue
Block a user