Files
server-bot-python/install.sh
T

73 lines
1.8 KiB
Bash

#!/bin/bash
# Пример использования: ./install.sh --token <TOKEN> --user_id <USER_ID>
set -e
# Парсинг аргументов
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
echo "Использование: $0 --token <TOKEN> --user_id <USER_ID>"
exit 1
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" <<EOL
[Unit]
Description=Server Bot Python
After=network.target
[Service]
Type=simple
WorkingDirectory=$DEPLOY_DIR
ExecStart=$VENV_DIR/bin/python $DEPLOY_DIR/src/main.py --token $TOKEN --user_id $USER_ID
Restart=always
User=$(whoami)
[Install]
WantedBy=multi-user.target
EOL
# Перезапуск сервиса
sudo systemctl daemon-reload
sudo systemctl enable server-bot-python.service
sudo systemctl restart server-bot-python.service
echo "Деплой и запуск завершены. Логи: sudo journalctl -u server-bot-python -f"