Добавлена возможность переустановки
This commit is contained in:
147
install.sh
147
install.sh
@@ -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
|
||||
Reference in New Issue
Block a user