Фикс баг, когда при попытке удаление сервисов, скрипт зависал
This commit is contained in:
34
install.sh
34
install.sh
@@ -67,7 +67,6 @@ check_existing_installation() {
|
|||||||
local apache_status=2 php_status=2 mariadb_status=2 redis_status=2
|
local apache_status=2 php_status=2 mariadb_status=2 redis_status=2
|
||||||
local need_reinstall=false
|
local need_reinstall=false
|
||||||
|
|
||||||
# Проверка Apache
|
|
||||||
log_info "Проверка Apache..."
|
log_info "Проверка Apache..."
|
||||||
if [ "$DISTRO_FAMILY" = "debian" ]; then
|
if [ "$DISTRO_FAMILY" = "debian" ]; then
|
||||||
if command -v apache2 >/dev/null 2>&1; then
|
if command -v apache2 >/dev/null 2>&1; then
|
||||||
@@ -91,7 +90,6 @@ check_existing_installation() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверка PHP
|
|
||||||
log_info "Проверка PHP..."
|
log_info "Проверка PHP..."
|
||||||
if command -v php >/dev/null 2>&1; then
|
if command -v php >/dev/null 2>&1; then
|
||||||
php_status=0
|
php_status=0
|
||||||
@@ -99,7 +97,6 @@ check_existing_installation() {
|
|||||||
php_status=2
|
php_status=2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверка MariaDB
|
|
||||||
log_info "Проверка MariaDB..."
|
log_info "Проверка MariaDB..."
|
||||||
if command -v mysql >/dev/null 2>&1; then
|
if command -v mysql >/dev/null 2>&1; then
|
||||||
if systemctl is-active --quiet mariadb 2>/dev/null; then
|
if systemctl is-active --quiet mariadb 2>/dev/null; then
|
||||||
@@ -111,7 +108,6 @@ check_existing_installation() {
|
|||||||
mariadb_status=2
|
mariadb_status=2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверка Redis
|
|
||||||
log_info "Проверка Redis..."
|
log_info "Проверка Redis..."
|
||||||
if command -v redis-cli >/dev/null 2>&1; then
|
if command -v redis-cli >/dev/null 2>&1; then
|
||||||
if systemctl is-active --quiet redis-server 2>/dev/null || systemctl is-active --quiet redis 2>/dev/null; then
|
if systemctl is-active --quiet redis-server 2>/dev/null || systemctl is-active --quiet redis 2>/dev/null; then
|
||||||
@@ -156,7 +152,6 @@ check_existing_installation() {
|
|||||||
2) echo -e "Redis: ${RED}Не установлен${NC}"; need_reinstall=true ;;
|
2) echo -e "Redis: ${RED}Не установлен${NC}"; need_reinstall=true ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Проверка конфигурации базы данных
|
|
||||||
if [ -f "/var/www/html/db_config.php" ]; then
|
if [ -f "/var/www/html/db_config.php" ]; then
|
||||||
echo -e "Конфигурация БД: ${GREEN}Найдена${NC}"
|
echo -e "Конфигурация БД: ${GREEN}Найдена${NC}"
|
||||||
else
|
else
|
||||||
@@ -178,12 +173,11 @@ check_existing_installation() {
|
|||||||
case $choice in
|
case $choice in
|
||||||
[Yy]|[Yy][Ee][Ss])
|
[Yy]|[Yy][Ee][Ss])
|
||||||
log_info "Начинаем полную переустановку..."
|
log_info "Начинаем полную переустановку..."
|
||||||
return 0 # полная переустановка
|
return 0
|
||||||
;;
|
;;
|
||||||
[Nn]|[Nn][Oo])
|
[Nn]|[Nn][Oo])
|
||||||
log_info "Переустановка отменена."
|
log_info "Переустановка отменена."
|
||||||
|
|
||||||
# Показываем информацию о доступе
|
|
||||||
IP_ADDR=$(hostname -I | awk '{print $1}')
|
IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||||
if [ -f "/root/.db_password" ]; then
|
if [ -f "/root/.db_password" ]; then
|
||||||
EXISTING_PASSWORD=$(grep "DB_PASSWORD=" /root/.db_password | cut -d'=' -f2)
|
EXISTING_PASSWORD=$(grep "DB_PASSWORD=" /root/.db_password | cut -d'=' -f2)
|
||||||
@@ -299,25 +293,24 @@ if [ "$SKIP_PACKAGE_INSTALL" = false ]; then
|
|||||||
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 "Ожидание полной остановки служб..."
|
||||||
|
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
|
||||||
# Полное удаление MariaDB/MySQL для чистой установки
|
|
||||||
apt remove --purge -y mariadb* mysql* >/dev/null 2>&1 || true
|
apt remove --purge -y mariadb* mysql* >/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
|
||||||
# Полное удаление MariaDB/MySQL для чистой установки
|
|
||||||
$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 "Старые пакеты удалены"
|
||||||
@@ -388,16 +381,13 @@ if [ "$SKIP_PACKAGE_INSTALL" = false ]; then
|
|||||||
$PKG_MANAGER install -y mariadb-server >/dev/null 2>&1
|
$PKG_MANAGER install -y mariadb-server >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Важно: запускаем MariaDB сразу после установки
|
|
||||||
log_info "Запуск MariaDB..."
|
log_info "Запуск MariaDB..."
|
||||||
systemctl start mariadb >/dev/null 2>&1
|
systemctl start mariadb >/dev/null 2>&1
|
||||||
systemctl enable mariadb >/dev/null 2>&1
|
systemctl enable mariadb >/dev/null 2>&1
|
||||||
|
|
||||||
# Ждем, пока MariaDB полностью запустится
|
|
||||||
log_info "Ожидание полного запуска MariaDB..."
|
log_info "Ожидание полного запуска MariaDB..."
|
||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
# Проверяем, что MariaDB действительно запущен
|
|
||||||
if ! systemctl is-active --quiet mariadb; then
|
if ! systemctl is-active --quiet mariadb; then
|
||||||
log_error "MariaDB не смог запуститься"
|
log_error "MariaDB не смог запуститься"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -718,7 +708,6 @@ log_success "Права доступа настроены"
|
|||||||
|
|
||||||
log_step "Настройка базы данных MariaDB..."
|
log_step "Настройка базы данных MariaDB..."
|
||||||
|
|
||||||
# Проверяем, что MariaDB действительно работает
|
|
||||||
if ! systemctl is-active --quiet mariadb; then
|
if ! systemctl is-active --quiet mariadb; then
|
||||||
log_error "MariaDB не запущен. Попытка запуска..."
|
log_error "MariaDB не запущен. Попытка запуска..."
|
||||||
systemctl start mariadb
|
systemctl start mariadb
|
||||||
@@ -730,14 +719,11 @@ if ! systemctl is-active --quiet mariadb; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Сначала выполняем базовую безопасную настройку
|
|
||||||
log_info "Выполнение базовой настройки безопасности MariaDB..."
|
log_info "Выполнение базовой настройки безопасности MariaDB..."
|
||||||
|
|
||||||
# Проверяем, можем ли мы подключиться без пароля (первичная установка)
|
|
||||||
if mysql -u root -e "SELECT 1;" >/dev/null 2>&1; then
|
if mysql -u root -e "SELECT 1;" >/dev/null 2>&1; then
|
||||||
log_info "Первичная настройка MariaDB (подключение без пароля доступно)..."
|
log_info "Первичная настройка MariaDB (подключение без пароля доступно)..."
|
||||||
|
|
||||||
# Устанавливаем пароль root и очищаем ненужные данные
|
|
||||||
MYSQL_SECURE_SCRIPT="/tmp/mysql_secure_$(date +%s).sql"
|
MYSQL_SECURE_SCRIPT="/tmp/mysql_secure_$(date +%s).sql"
|
||||||
cat > "$MYSQL_SECURE_SCRIPT" << MYSQL_SCRIPT
|
cat > "$MYSQL_SECURE_SCRIPT" << MYSQL_SCRIPT
|
||||||
-- Устанавливаем пароль для root
|
-- Устанавливаем пароль для root
|
||||||
@@ -775,7 +761,6 @@ MYSQL_SCRIPT
|
|||||||
elif mysql -u root -p"$DB_PASSWORD" -e "SELECT 1;" >/dev/null 2>&1; then
|
elif mysql -u root -p"$DB_PASSWORD" -e "SELECT 1;" >/dev/null 2>&1; then
|
||||||
log_info "MariaDB уже настроен с текущим паролем..."
|
log_info "MariaDB уже настроен с текущим паролем..."
|
||||||
|
|
||||||
# Просто создаем базу данных если она не существует
|
|
||||||
MYSQL_UPDATE_SCRIPT="/tmp/mysql_update_$(date +%s).sql"
|
MYSQL_UPDATE_SCRIPT="/tmp/mysql_update_$(date +%s).sql"
|
||||||
cat > "$MYSQL_UPDATE_SCRIPT" << MYSQL_SCRIPT
|
cat > "$MYSQL_UPDATE_SCRIPT" << MYSQL_SCRIPT
|
||||||
CREATE DATABASE IF NOT EXISTS ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
CREATE DATABASE IF NOT EXISTS ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
@@ -796,16 +781,13 @@ else
|
|||||||
log_error "Не удалось подключиться к MariaDB ни с пустым паролем, ни с текущим паролем"
|
log_error "Не удалось подключиться к MariaDB ни с пустым паролем, ни с текущим паролем"
|
||||||
log_info "Попытка сброса пароля root в MariaDB..."
|
log_info "Попытка сброса пароля root в MariaDB..."
|
||||||
|
|
||||||
# Останавливаем MariaDB
|
|
||||||
systemctl stop mariadb
|
systemctl stop mariadb
|
||||||
|
|
||||||
# Запускаем в безопасном режиме для сброса пароля
|
|
||||||
mysqld_safe --skip-grant-tables --skip-networking &
|
mysqld_safe --skip-grant-tables --skip-networking &
|
||||||
MYSQLD_SAFE_PID=$!
|
MYSQLD_SAFE_PID=$!
|
||||||
|
|
||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
# Сбрасываем пароль
|
|
||||||
MYSQL_RESET_SCRIPT="/tmp/mysql_reset_$(date +%s).sql"
|
MYSQL_RESET_SCRIPT="/tmp/mysql_reset_$(date +%s).sql"
|
||||||
cat > "$MYSQL_RESET_SCRIPT" << MYSQL_SCRIPT
|
cat > "$MYSQL_RESET_SCRIPT" << MYSQL_SCRIPT
|
||||||
USE mysql;
|
USE mysql;
|
||||||
@@ -816,20 +798,17 @@ MYSQL_SCRIPT
|
|||||||
|
|
||||||
if mysql -u root < "$MYSQL_RESET_SCRIPT" >/dev/null 2>&1; then
|
if mysql -u root < "$MYSQL_RESET_SCRIPT" >/dev/null 2>&1; then
|
||||||
log_info "Пароль root сброшен"
|
log_info "Пароль root сброшен"
|
||||||
|
|
||||||
# Убиваем mysqld_safe
|
|
||||||
kill $MYSQLD_SAFE_PID 2>/dev/null || true
|
kill $MYSQLD_SAFE_PID 2>/dev/null || true
|
||||||
sleep 2
|
sleep 2
|
||||||
killall mysqld_safe 2>/dev/null || true
|
killall mysqld_safe 2>/dev/null || true
|
||||||
killall mysqld 2>/dev/null || true
|
killall mysqld 2>/dev/null || true
|
||||||
sleep 3
|
sleep 3
|
||||||
|
|
||||||
# Запускаем MariaDB нормально
|
|
||||||
systemctl start mariadb
|
systemctl start mariadb
|
||||||
sleep 3
|
sleep 3
|
||||||
|
|
||||||
if systemctl is-active --quiet mariadb && mysql -u root -p"$DB_PASSWORD" -e "SELECT 1;" >/dev/null 2>&1; then
|
if systemctl is-active --quiet mariadb && mysql -u root -p"$DB_PASSWORD" -e "SELECT 1;" >/dev/null 2>&1; then
|
||||||
# Создаем базу данных
|
|
||||||
MYSQL_FINAL_SCRIPT="/tmp/mysql_final_$(date +%s).sql"
|
MYSQL_FINAL_SCRIPT="/tmp/mysql_final_$(date +%s).sql"
|
||||||
cat > "$MYSQL_FINAL_SCRIPT" << MYSQL_SCRIPT
|
cat > "$MYSQL_FINAL_SCRIPT" << MYSQL_SCRIPT
|
||||||
CREATE DATABASE IF NOT EXISTS ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
CREATE DATABASE IF NOT EXISTS ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
@@ -910,7 +889,6 @@ if ! php -r "echo phpversion();" >/dev/null 2>&1; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверяем подключение к БД с новым паролем
|
|
||||||
if ! mysql -u root -p"$DB_PASSWORD" -e "USE ALTCor; SELECT 1;" >/dev/null 2>&1; then
|
if ! mysql -u root -p"$DB_PASSWORD" -e "USE ALTCor; SELECT 1;" >/dev/null 2>&1; then
|
||||||
log_error "Не удается подключиться к базе данных ALTCor"
|
log_error "Не удается подключиться к базе данных ALTCor"
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
Reference in New Issue
Block a user