From 63182f3a687e5e0f74054f6cc3d25c9f54b37455 Mon Sep 17 00:00:00 2001 From: Alexey Barabanov Date: Sat, 1 Nov 2025 11:39:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0=20visual.=20=D0=A2?= =?UTF-8?q?=D0=B0=D0=BA=20=D0=B6=D0=B5=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BF=D0=B0=D1=80=D0=B0=20=D0=BD=D0=B5=20=D0=BD?= =?UTF-8?q?=D1=83=D0=B6=D0=BD=D1=8B=D1=85=20=D1=84=D1=83=D0=BD=D1=86=D0=B8?= =?UTF-8?q?=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy.sh | 121 ++++++++++-------------------------------------------- 1 file changed, 21 insertions(+), 100 deletions(-) diff --git a/deploy.sh b/deploy.sh index 291ec80..43364c3 100644 --- a/deploy.sh +++ b/deploy.sh @@ -39,7 +39,7 @@ install_packages() { apt-get update log_info "Установка необходимых пакетов..." - apt-get install -y python3 python3-pip python3-venv git systemd net-tools + apt-get install -y python3 python3-pip python3-venv git net-tools # Проверка установки if ! command -v python3 &> /dev/null; then @@ -90,40 +90,6 @@ download_code() { log_info "Текущая ветка: $(git branch --show-current)" } -# Функция обновления requirements.txt -update_requirements() { - local target_dir="/root/RFB" - cd $target_dir - - log_info "Обновление requirements.txt..." - - # Создаем или обновляем requirements.txt - if [ ! -f "requirements.txt" ]; then - log_warn "requirements.txt не найден, создаем новый..." - cat > requirements.txt << EOF -streamlit>=1.28.0 -requests>=2.31.0 -pandas>=2.0.0 -numpy>=1.24.0 -plotly>=5.15.0 -watchdog>=3.0.0 -pillow>=10.0.0 -streamlit_autorefresh>=0.1.7 -EOF - else - # Проверяем, есть ли streamlit_autorefresh в requirements.txt - if ! grep -q "streamlit_autorefresh" requirements.txt; then - log_info "Добавляем streamlit_autorefresh в requirements.txt..." - echo "streamlit_autorefresh>=0.1.7" >> requirements.txt - else - log_info "streamlit_autorefresh уже есть в requirements.txt" - fi - fi - - log_info "Содержимое requirements.txt:" - cat requirements.txt -} - # Функция настройки виртуального окружения setup_venv() { local target_dir="/root/RFB" @@ -144,7 +110,6 @@ setup_venv() { pip install --upgrade pip # Обновляем requirements.txt перед установкой - update_requirements if [ -f "requirements.txt" ]; then log_info "Установка зависимостей из requirements.txt..." @@ -153,19 +118,8 @@ setup_venv() { log_warn "Файл requirements.txt не найден, устанавливаем базовые зависимости..." pip install streamlit requests pandas numpy plotly watchdog pillow streamlit_autorefresh fi - - # Дополнительная проверка и установка streamlit_autorefresh на всякий случай - if ! python -c "import streamlit_autorefresh" 2>/dev/null; then - log_info "Устанавливаем streamlit_autorefresh..." - pip install streamlit_autorefresh - fi - - # Проверка установки streamlit - if ! [ -f ".venv/bin/streamlit" ]; then - log_error "Streamlit не установлен в виртуальном окружении" - exit 1 - fi - + + log_info "Проверка установленных пакетов:" python -c " import streamlit, requests, pandas, numpy, plotly, streamlit_autorefresh @@ -185,19 +139,12 @@ create_systemd_services() { if [ -n "$league" ]; then log_info "Лига: $league" fi - - # Останавливаем и отключаем старые сервисы если они есть - for service in rfb-data.service rfb-visual.service rfb-stat.service; do - if systemctl is-active --quiet $service; then - log_info "Остановка $service..." - systemctl stop $service - fi - if systemctl is-enabled --quiet $service; then - log_info "Отключение $service..." - systemctl disable $service - fi + # Останавливаем и отключаем старые сервисы если они есть + systemctl is-active --quiet rfb-data.service; then + log_info "Остановка rfb-data.service..." + systemctl stop rfb-data.service done - + # Формируем команду для data сервиса local data_command="/root/RFB/.venv/bin/python3 /root/RFB/get_data.py --team \"$team\"" if [ -n "$league" ]; then @@ -207,7 +154,7 @@ create_systemd_services() { # Сервис для data local data_service_file="/etc/systemd/system/rfb-data.service" - cat > $data_service_file << EOF + cat > rfb-data.service << EOF [Unit] Description=RFB Data Service After=network.target @@ -219,30 +166,7 @@ WorkingDirectory=/root/RFB Environment=PATH=/root/RFB/.venv/bin ExecStart=$data_command Restart=always -RestartSec=10 -StandardOutput=journal -StandardError=journal - -[Install] -WantedBy=multi-user.target -EOF - - # Сервис для visual - local visual_service_file="/etc/systemd/system/rfb-visual.service" - - cat > $visual_service_file << EOF -[Unit] -Description=RFB Visual Service -After=network.target rfb-data.service - -[Service] -Type=simple -User=root -WorkingDirectory=/root/RFB -Environment=PATH=/root/RFB/.venv/bin -ExecStart=/root/RFB/.venv/bin/streamlit run /root/RFB/visual.py --server.port 8501 --server.address 0.0.0.0 -Restart=always -RestartSec=10 +RestartSec=30 StandardOutput=journal StandardError=journal @@ -251,7 +175,7 @@ WantedBy=multi-user.target EOF # Настройка прав - chmod 644 $data_service_file $visual_service_file + chmod 644 rfb-data.service log_info "Перезагрузка systemd демонов..." systemctl daemon-reload @@ -338,25 +262,25 @@ detect_team() { # Функция настройки firewall setup_firewall() { - log_info "Настройка firewall (открытие порта 8501)..." + log_info "Настройка firewall (открытие порта 8000)..." # Проверяем наличие ufw if command -v ufw &> /dev/null; then - ufw allow 8501/tcp - log_info "Порт 8501 открыт в ufw" + ufw allow 8000/tcp + log_info "Порт 8000 открыт в ufw" fi # Для firewalld (CentOS/RHEL) if command -v firewall-cmd &> /dev/null; then - firewall-cmd --permanent --add-port=8501/tcp + firewall-cmd --permanent --add-port=8000/tcp firewall-cmd --reload - log_info "Порт 8501 открыт в firewalld" + log_info "Порт 8000 открыт в firewalld" fi } # Функция проверки порта check_port() { - local port=8501 + local port=8000 if command -v netstat &> /dev/null && netstat -tuln | grep ":$port " > /dev/null; then log_warn "Порт $port уже занят. Возможно, приложение уже запущено." return 1 @@ -375,15 +299,15 @@ manage_services() { case $action in "start") log_info "Запуск сервисов..." - systemctl start rfb-data.service rfb-visual.service + systemctl start rfb-data.service ;; "restart") log_info "Перезапуск сервисов..." - systemctl restart rfb-data.service rfb-visual.service + systemctl restart rfb-data.service ;; "stop") log_info "Остановка сервисов..." - systemctl stop rfb-data.service rfb-visual.service + systemctl stop rfb-data.service ;; esac @@ -396,9 +320,6 @@ check_services_status() { log_info "Статус сервисов:" echo "=== RFB Data Service ===" systemctl status rfb-data.service --no-pager - echo "" - echo "=== RFB Visual Service ===" - systemctl status rfb-visual.service --no-pager } # Основная функция @@ -473,7 +394,7 @@ main() { log_info "==================================================" log_info "Установка завершена успешно!" - log_info "Приложение должно быть доступно по адресу: http://${ip_address}:8501" + log_info "Приложение должно быть доступно по адресу: http://${ip_address}:8000" log_info "Команда: $final_team" if [ -n "$league" ]; then log_info "Лига: $league"