Files
bot-news-linux-gaming/install-service.sh

127 lines
4.8 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Установочный скрипт для Linux Gaming News Bot
# Создает systemd service и настраивает его для автозапуска
set -e # Выход при любой ошибке
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Функции для цветного вывода
print_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Проверка запуска от root
if [ "$EUID" -ne 0 ]; then
print_error "Скрипт должен быть запущен с правами root (sudo)"
print_info "Используйте: sudo ./install-service.sh"
exit 1
fi
# Определение текущего пользователя (не root)
REAL_USER=$(who am i | awk '{print $1}')
if [ -z "$REAL_USER" ]; then
REAL_USER=$(logname 2>/dev/null || echo $SUDO_USER)
fi
if [ -z "$REAL_USER" ]; then
print_error "Не удалось определить имя пользователя"
exit 1
fi
print_info "Установка сервиса для пользователя: $REAL_USER"
# Определение директории проекта
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$SCRIPT_DIR"
print_info "Директория проекта: $PROJECT_DIR"
# Проверка существования файлов
if [ ! -f "$PROJECT_DIR/news-bot-modular.py" ]; then
print_error "Не найден файл news-bot-modular.py в $PROJECT_DIR"
exit 1
fi
if [ ! -f "$PROJECT_DIR/bot-news-linux-gaming.service" ]; then
print_error "Не найден файл bot-news-linux-gaming.service в $PROJECT_DIR"
exit 1
fi
# Проверка наличия keys.py
if [ ! -f "$PROJECT_DIR/keys.py" ]; then
print_warning "Не найден файл keys.py с настройками"
print_info "Создайте keys.py на основе keys_example.py перед запуском сервиса:"
print_info " cp keys_example.py keys.py"
print_info " nano keys.py # заполните реальными ключами"
fi
# Создание временного файла сервиса с правильными путями
TEMP_SERVICE=$(mktemp)
sed "s|/home/xpamych/Yandex.Disk/IdeaProjects/bot-news-linux-gaming|$PROJECT_DIR|g" "$PROJECT_DIR/bot-news-linux-gaming.service" > "$TEMP_SERVICE"
sed -i "s|User=xpamych|User=$REAL_USER|g" "$TEMP_SERVICE"
sed -i "s|Group=xpamych|Group=$REAL_USER|g" "$TEMP_SERVICE"
print_info "Копирование systemd unit файла..."
cp "$TEMP_SERVICE" /etc/systemd/system/bot-news-linux-gaming.service
rm "$TEMP_SERVICE"
print_info "Установка прав доступа..."
chmod 644 /etc/systemd/system/bot-news-linux-gaming.service
chown root:root /etc/systemd/system/bot-news-linux-gaming.service
print_info "Перезагрузка systemd..."
systemctl daemon-reload
print_success "Сервис успешно установлен!"
print_info ""
print_info "Для управления сервисом используйте команды:"
print_info " sudo systemctl enable bot-news-linux-gaming # Включить автозапуск"
print_info " sudo systemctl start bot-news-linux-gaming # Запустить сервис"
print_info " sudo systemctl status bot-news-linux-gaming # Посмотреть статус"
print_info " sudo systemctl stop bot-news-linux-gaming # Остановить сервис"
print_info " sudo systemctl disable bot-news-linux-gaming # Отключить автозапуск"
print_info ""
print_info "Логи сервиса:"
print_info " sudo journalctl -u bot-news-linux-gaming -f # Следить за логами"
print_info " sudo journalctl -u bot-news-linux-gaming -n 50 # Последние 50 строк"
print_info ""
# Предложение сразу включить и запустить
read -p "Включить автозапуск и запустить сервис сейчас? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
print_info "Включение автозапуска..."
systemctl enable bot-news-linux-gaming
print_info "Запуск сервиса..."
systemctl start bot-news-linux-gaming
sleep 2
print_info "Статус сервиса:"
systemctl status bot-news-linux-gaming --no-pager
print_success "Сервис запущен и добавлен в автозагрузку!"
else
print_info "Сервис установлен, но не запущен. Запустите его командой:"
print_info " sudo systemctl enable --now bot-news-linux-gaming"
fi