/
dsboikov
/
PyRelay
Обзор
Документация
Войти
/
dsboikov
/
PyRelay
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
deploy.sh
57 строк
2 KB
Denis
Доработано развёртывание сервиса
20 июл 2026, 23:45
20 июл 2026, 23:45
0c7c121
Код
Авторство
О чём код?
#!/usr/bin/env bash # Локальный (пере)деплой relay-сервиса на этой же машине. # Использование: sudo ./deploy.sh # # Идемпотентен: можно запускать как при первой установке, так и при обновлении кода set -euo pipefail RELAY_DIR="/opt/relay" SERVICE_NAME="relay.service" PYTHON_BIN="python3.12" if [[ $EUID -ne 0 ]]; then echo "Нужны права root (для systemd и /etc). Запустите через sudo." >&2 exit 1 fi cd "$RELAY_DIR" # --- venv: создаём только если его ещё нет --- if [[ ! -d venv ]]; then echo "==> venv не найден, создаю..." "$PYTHON_BIN" -m venv venv else echo "==> venv уже существует, пропускаю создание" fi # --- зависимости: ставим/обновляем всегда, это дёшево и безопасно --- echo "==> Устанавливаю/обновляю зависимости..." ./venv/bin/pip install --upgrade -r requirements.txt # --- systemd unit: обновляем, только если файл реально изменился --- UNIT_CHANGED=false if [[ ! -f "/etc/systemd/system/${SERVICE_NAME}" ]] || \ ! cmp -s "${SERVICE_NAME}" "/etc/systemd/system/${SERVICE_NAME}"; then echo "==> Обновляю systemd unit-файл..." cp "${SERVICE_NAME}" "/etc/systemd/system/${SERVICE_NAME}" UNIT_CHANGED=true else echo "==> systemd unit не изменился, пропускаю копирование" fi if [[ "$UNIT_CHANGED" == true ]]; then systemctl daemon-reload fi # --- запуск/перезапуск сервиса --- if systemctl is-active --quiet "$SERVICE_NAME"; then echo "==> Сервис уже запущен, перезапускаю (подхватить новый код)..." systemctl restart "$SERVICE_NAME" else echo "==> Сервис не запущен, включаю и запускаю..." systemctl enable --now "$SERVICE_NAME" fi echo "==> Готово. Статус:" systemctl status "$SERVICE_NAME" --no-pager