From 89325818cd3ab152b1f5010b5316600c8eb68429 Mon Sep 17 00:00:00 2001 From: F7 Office Deploy Date: Mon, 23 Feb 2026 04:49:52 +0000 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D0=B0=20?= =?UTF-8?q?=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- f7office.sh | 70 ++++++++++++++++++++++++++++++ install-f7office.sh | 101 +++----------------------------------------- 2 files changed, 75 insertions(+), 96 deletions(-) create mode 100644 f7office.sh diff --git a/f7office.sh b/f7office.sh new file mode 100644 index 0000000..b0616a8 --- /dev/null +++ b/f7office.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# Установка F7_Office (coolwsd, брендинг). Запускается на сервере Office. +# Apache и сертификаты настраивает управляющий скрипт. +# Использование: ./f7office.sh /path/to/f7cloud-install.env + +set -e +ROLE="f7office" +ENV_FILE="${1:-/tmp/f7cloud-install.env}" +ERROR_LOG="/tmp/install-error-${ROLE}.log" + +log_error() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] ERROR: $*" >> "$ERROR_LOG"; echo "ERROR: $*" >&2; } +log_warn() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] WARN: $*" >> "$ERROR_LOG"; echo "WARN: $*" >&2; } + +if [ ! -f "$ENV_FILE" ]; then + log_error "Файл конфигурации не найден: $ENV_FILE" + exit 1 +fi +# shellcheck source=/dev/null +set -a && source "$ENV_FILE" && set +a + +> "$ERROR_LOG" +echo "=== Лог установки F7_Office ===" >> "$ERROR_LOG" +echo "Начало: $(date '+%Y-%m-%d %H:%M:%S')" >> "$ERROR_LOG" + +if ! command -v git >/dev/null 2>&1; then + echo "Установка git..." + apt-get update -qq && apt-get install -y git || { log_error "Не удалось установить git"; exit 1; } +fi + +echo "Очистка старой директории..." +rm -rf /tmp/F7_Office + +echo "Клонирование репозитория F7_Office..." +if ! (cd /tmp && git clone https://git.f7cloud.ru/root/F7_Office.git); then + log_error "Не удалось клонировать репозиторий F7_Office" + exit 1 +fi + +sleep 1 +if ! [ -d /tmp/F7_Office ] || ! [ -f /tmp/F7_Office/install-f7office.sh ]; then + log_error "Директория /tmp/F7_Office не содержит install-f7office.sh" + exit 1 +fi + +echo "Установка coolwsd и code-brand..." +apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y coolwsd code-brand || { log_error "Не удалось установить coolwsd/code-brand"; exit 1; } + +echo "Копирование файлов брендинга..." +DIST_SRC=/tmp/F7_Office/usr/share/coolwsd/browser/dist +DIST_DST=/usr/share/coolwsd/browser/dist +if [ ! -d "$DIST_DST" ]; then + log_error "Каталог $DIST_DST не найден после установки coolwsd" + exit 1 +fi +if [ ! -d "$DIST_SRC" ]; then + log_error "В репозитории не найден каталог $DIST_SRC" + exit 1 +fi +cp -a "$DIST_SRC"/* "$DIST_DST/" 2>/dev/null || true +for f in branding.js branding.css branding-mobile.css branding-tablet.css cool.html wasm.html; do + [ -f "$DIST_SRC/$f" ] && cp -a "$DIST_SRC/$f" "$DIST_DST/" && echo " Скопирован: $f" +done +[ -d "$DIST_SRC/welcome" ] && cp -a "$DIST_SRC/welcome" "$DIST_DST/" +[ -d "$DIST_SRC/src" ] && mkdir -p "$DIST_DST/src" && cp -a "$DIST_SRC/src/layer" "$DIST_DST/src/" 2>/dev/null || true +[ -d "$DIST_SRC/f7cloud" ] && cp -a "$DIST_SRC/f7cloud" "$DIST_DST/" +systemctl restart coolwsd 2>/dev/null || true + +echo "Конец: $(date '+%Y-%m-%d %H:%M:%S')" >> "$ERROR_LOG" +echo "F7_Office установлен. Лог ошибок: $ERROR_LOG" +exit 0 diff --git a/install-f7office.sh b/install-f7office.sh index 398678d..a15d722 100644 --- a/install-f7office.sh +++ b/install-f7office.sh @@ -18,38 +18,7 @@ else fi COPY() { - # Проверка существования источника - if [ ! -e "$1" ]; then - echo "Предупреждение: источник не существует: $1" - return 1 - fi - - # Создаем целевую директорию, если её нет - local target_dir=$(dirname "$2") - if [ ! -d "$target_dir" ]; then - if [ -z "$DRY_RUN" ]; then - mkdir -p "$target_dir" - if [ $? -ne 0 ]; then - echo "Ошибка: Не удалось создать директорию $target_dir" - return 1 - fi - else - echo "[DRY-RUN] mkdir -p $target_dir" - fi - fi - - # Копируем файл - if [ -z "$DRY_RUN" ]; then - cp -a "$1" "$2" - if [ $? -ne 0 ]; then - echo "Ошибка: Не удалось скопировать $1 в $2" - return 1 - fi - else - echo "[DRY-RUN] cp -a $1 $2" - fi - - return 0 + $DRY_RUN cp -a "$1" "$2" } # Копирование browser/dist (только изменённые файлы) @@ -57,31 +26,10 @@ DIST_SRC="${ROOT}/usr/share/coolwsd/browser/dist" DIST_DST="/usr/share/coolwsd/browser/dist" if [ ! -d "$DIST_DST" ]; then - echo "Ошибка: Каталог $DIST_DST не найден." - echo "Сначала установите coolwsd и code-brand." - echo "" - echo "Для Debian/Ubuntu:" - echo " apt-get update" - echo " apt-get install coolwsd code-brand" + echo "Каталог $DIST_DST не найден. Сначала установите coolwsd и code-brand." exit 1 fi -# Дополнительная проверка: проверяем, что coolwsd установлен -if ! command -v coolwsd &>/dev/null; then - echo "Предупреждение: Команда coolwsd не найдена в PATH." - echo "Убедитесь, что coolwsd установлен корректно." -fi - -# Проверяем статус сервиса coolwsd (если доступен systemctl) -if command -v systemctl &>/dev/null; then - if systemctl is-active --quiet coolwsd 2>/dev/null; then - echo "✓ Сервис coolwsd запущен" - else - echo "⚠ Предупреждение: Сервис coolwsd не запущен." - echo " После установки файлов запустите: systemctl start coolwsd" - fi -fi - [ -f "$DIST_SRC/branding.js" ] && COPY "$DIST_SRC/branding.js" "$DIST_DST/" [ -f "$DIST_SRC/branding.css" ] && COPY "$DIST_SRC/branding.css" "$DIST_DST/" [ -f "$DIST_SRC/branding-mobile.css" ] && COPY "$DIST_SRC/branding-mobile.css" "$DIST_DST/" @@ -103,48 +51,9 @@ fi # [ -f "${ROOT}/etc/apache2/sites-available/collabora-le-ssl.conf" ] && COPY "${ROOT}/etc/apache2/sites-available/collabora-le-ssl.conf" /etc/apache2/sites-available/ if [ -z "$DRY_RUN" ]; then - echo "Файлы установлены." - - # Проверяем, какие файлы были скопированы - echo "" - echo "Установленные файлы:" - [ -f "$DIST_DST/branding.js" ] && echo " ✓ branding.js" || echo " ✗ branding.js (не найден)" - [ -f "$DIST_DST/branding.css" ] && echo " ✓ branding.css" || echo " ✗ branding.css (не найден)" - [ -f "$DIST_DST/branding-mobile.css" ] && echo " ✓ branding-mobile.css" || echo " ✗ branding-mobile.css (не найден)" - [ -f "$DIST_DST/branding-tablet.css" ] && echo " ✓ branding-tablet.css" || echo " ✗ branding-tablet.css (не найден)" - [ -f "$DIST_DST/cool.html" ] && echo " ✓ cool.html" || echo " ✗ cool.html (не найден)" - [ -f "$DIST_DST/wasm.html" ] && echo " ✓ wasm.html" || echo " ✗ wasm.html (не найден)" - [ -f "$DIST_DST/welcome/welcome.html" ] && echo " ✓ welcome/welcome.html" || echo " ✗ welcome/welcome.html (не найден)" - [ -f "$DIST_DST/src/layer/tile/CanvasTileUtils.js" ] && echo " ✓ src/layer/tile/CanvasTileUtils.js" || echo " ✗ src/layer/tile/CanvasTileUtils.js (не найден)" - [ -f "$DIST_DST/src/layer/tile/TileWorker.js" ] && echo " ✓ src/layer/tile/TileWorker.js" || echo " ✗ src/layer/tile/TileWorker.js (не найден)" - [ -d "$DIST_DST/f7cloud" ] && echo " ✓ f7cloud/ (директория брендинга)" || echo " ✗ f7cloud/ (директория не найдена)" - - echo "" - echo "Перезапуск coolwsd..." - if command -v systemctl &>/dev/null; then - if systemctl restart coolwsd 2>/dev/null; then - echo "✓ coolwsd перезапущен успешно" - - # Проверяем статус после перезапуска - sleep 1 - if systemctl is-active --quiet coolwsd 2>/dev/null; then - echo "✓ coolwsd работает корректно" - else - echo "⚠ Предупреждение: coolwsd не запустился после перезапуска" - echo " Проверьте логи: journalctl -u coolwsd" - fi - else - echo "⚠ Не удалось перезапустить coolwsd автоматически" - echo " Запустите вручную: systemctl restart coolwsd" - echo " Или проверьте статус: systemctl status coolwsd" - fi - else - echo "⚠ systemctl не найден, перезапустите coolwsd вручную" - fi - - echo "" - echo "Готово. F7_Office брендинг установлен." + echo "Файлы установлены. Перезапуск coolwsd..." + systemctl restart coolwsd 2>/dev/null || true + echo "Готово." else echo "Dry-run: команды выше не выполнялись." - echo "Для реальной установки запустите скрипт без --dry-run" fi