#!/bin/bash # Пример использования: ./install.sh --token --user_id set -e # Проверка и установка python3, pip и venv if ! command -v python3 >/dev/null 2>&1; then echo "Python3 не найден. Устанавливаю..." if [ -f /etc/debian_version ]; then sudo apt update && sudo apt install -y python3 elif [ -f /etc/redhat-release ]; then sudo yum install -y python3 else echo "Неизвестная ОС. Установите python3 вручную." exit 1 fi fi if ! python3 -m pip --version >/dev/null 2>&1; then echo "pip не найден. Устанавливаю..." curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3 fi if ! python3 -m venv --help >/dev/null 2>&1; then echo "venv не найден. Устанавливаю..." if [ -f /etc/debian_version ]; then sudo apt update && sudo apt install -y python3-venv elif [ -f /etc/redhat-release ]; then sudo yum install -y python3-venv else echo "Неизвестная ОС. Установите python3-venv вручную." exit 1 fi fi # Парсинг аргументов while [[ "$#" -gt 0 ]]; do case $1 in --token) TOKEN="$2" shift 2 ;; --user_id) USER_ID="$2" shift 2 ;; *) echo "Неизвестный параметр $1" exit 1 ;; esac done if [[ -z "$TOKEN" || -z "$USER_ID" ]]; then if [[ -z "$TOKEN" ]]; then read -p "Введите TOKEN: " TOKEN fi if [[ -z "$USER_ID" ]]; then read -p "Введите USER_ID: " USER_ID fi fi # Папка для деплоя DEPLOY_DIR="/opt/server-bot-python" # Копируем проект sudo mkdir -p "$DEPLOY_DIR" sudo rsync -a --exclude='.git' --exclude='__pycache__' ./ "$DEPLOY_DIR"/ # Установка зависимостей VENV_DIR="$DEPLOY_DIR/venv" # Создание виртуального окружения, если не существует if [[ ! -d "$VENV_DIR" ]]; then sudo python3 -m venv "$VENV_DIR" fi # Установка зависимостей в venv sudo "$VENV_DIR/bin/pip" install --upgrade pip sudo "$VENV_DIR/bin/pip" install -r "$DEPLOY_DIR/requirements.txt" # Создание systemd unit-файла SERVICE_FILE="/etc/systemd/system/server-bot-python.service" sudo bash -c "cat > $SERVICE_FILE" <