-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup-bot.sh
More file actions
90 lines (74 loc) · 3.06 KB
/
setup-bot.sh
File metadata and controls
90 lines (74 loc) · 3.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash
# setup-bot.sh — Установка и запуск DiStudio бота с pyenv и venv
# Настройка логирования
LOG_FILE="setup.log"
exec > >(tee -i "$LOG_FILE")
exec 2>&1
echo "========== НАЧАЛО УСТАНОВКИ $(date '+%Y-%m-%d %H:%M:%S') =========="
# Функция для проверки ошибок
check_error() {
if [ $? -ne 0 ]; then
echo "❌ Ошибка на шаге: $1"
exit 1
fi
echo "✅ $1 — успешно"
}
# 1. Установка pyenv (если ещё не установлен)
if ! command -v pyenv &> /dev/null; then
echo "📥 Устанавливаем pyenv..."
curl https://pyenv.run | bash
check_error "Установка pyenv"
else
echo "✅ pyenv уже установлен"
fi
# 2. Настройка окружения pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
echo "⚙️ Настроено окружение pyenv"
# 3. Установка Python 3.11.9
echo "🐍 Устанавливаем Python 3.11.9..."
pyenv install -s 3.11.9 || {
echo "⚠️ Python 3.11.9 уже может быть установлен или недоступен"
}
pyenv local 3.11.9
check_error "Установка Python 3.11.9"
# 4. Удаление существующего venv
if [ -d "venv" ]; then
echo "🗑️ Удаляем старое виртуальное окружение..."
rm -rf venv
check_error "Удаление старого venv"
else
echo "ℹ️ Виртуальное окружение 'venv' не найдено — создаём новое"
fi
# 5. Создание нового venv
echo "🔄 Создаём новое виртуальное окружение..."
python -m venv venv
check_error "Создание venv"
# 6. Активация venv
source venv/bin/activate
echo "✅ Виртуальное окружение активировано"
# 7. Обновление pip
echo "📦 Обновляем pip..."
python -m pip install --upgrade pip > /dev/null 2>&1
check_error "Обновление pip"
# 8. Установка зависимостей
if [ -f "requirements.txt" ]; then
echo "📥 Устанавливаем зависимости из requirements.txt..."
pip install -r requirements.txt
check_error "Установка зависимостей"
else
echo "❌ Файл requirements.txt не найден!"
exit 1
fi
# 9. Проверка aiogram и aiosqlite
echo "🔍 Проверяем установку ключевых пакетов..."
python -c "import aiogram, sqlalchemy, aiosqlite" 2>/dev/null
check_error "Проверка импорта aiogram, SQLAlchemy, aiosqlite"
# 10. Запуск бота
echo "🚀 Запускаем бота: python main.py"
deactivate 2>/dev/null # деактивируем, чтобы запустить с явным путём
source venv/bin/activate
python main.py
# Лог завершения
echo "========== ЗАВЕРШЕНИЕ УСТАНОВКИ $(date '+%Y-%m-%d %H:%M:%S') =========="