Перейти к содержанию

Обновление AW

Внимание Перед переходом на релиз 1.34 и старше обязательно проверьте корректность формул на Вашем стенде.

Рекомендуем заранее ознакомиться с описанием целевых и промежуточных релизов на нашем портале AW community

Внимание Перед переходом на релиз 1.37 настоятельно рекомендуется выполнить резервное копирование БД AW.

Технические изменения в выпуске AW 1.37.*

Добавлены заголовки которые позволяют загружать файлы для html-виджета из другого источника. В связи с этим нужно внести изменения в конфигурационный файл web-сервера Nginx (по умолчанию расположен по пути /opt/aw/app/docker/nginx/nginx.conf), добавить следующие строки:

location ~ ^/(html\.css|assets/lib/(html-to-image\.js|html2canvas\.min\.js))$ {
    root /frontend;

    add_header Access-Control-Allow-Origin "*" always;
    add_header Access-Control-Allow-Methods "GET, OPTIONS" always;
    add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept" always;
}

Изменения в конфигурации

Добавлены переменные:

Переменная Новая? Описание Значение
по умолчанию
PUPPETEER_TIMEOUT_MS Да Таймаут на получение скриншота 30000

Внимание!! В связи с обновлением версии clickhouse, для корректной работы приложения требуется ядро Linux 3.15+. Посмотреть текущую версию можно выполнив команду:

uname -r

Пример вывода:

awbi@bi-aw:~$ uname -r
6.12.48+deb13-amd64

Обновление AW

Для обновления Системы выполните следующие действия:

  1. Подключитесь к серверу через ssh
  2. Перейдите в рабочую директорию приложения, в дальнейшем ожидается, что остальные команды выполняются из рабочей директории приложения:

    cd /opt/aw/app
    
    Загрузите на сервер дистрибутив AW BI.

  3. Создайте резервную копию файла конфигурации, а также сформируйте список изменений в файле конфигурации по сравнению с шаблоном:

    cp .env ../env.backup.$(date +'%Y-%m-%d_%H%M%S')
    diff -wu .env.dist .env > ../env.diff
    
  4. Остановите AW:

    docker compose down -v
    
  5. Удалите папку rabbitmq для корректного обновления версии:

    rm -rf ../db/rabbitmq
    
  6. Распакуйте дистрибутив:

    tar xvf ./release-VERSION.tar
    
    Файл дистрибутива можно удалить, если есть дефицит дискового пространства

  7. Скопируйте шаблон файла конфигурации .env.dist в файл конфигурации .env и примените изменения в нем (автоматически или вручную):

    cp .env.dist .env
    # автоматическое применение изменений:
    patch < ../env.diff
    
    Автоматическое применение изменений может не сработать в некоторых случаях. В этом случае необходимо будет вручную повторно внести изменения в файле .env.

    Убедитесь, что произведены все изменения в конфигурации между старой и новой версиями.

  8. Загрузите в Docker обновленные образы компонентов AW.

    Для закрытого контура перейдите в каталог установки Системы и выполните скрипт ./install.sh:

    chmod +x install.sh
    ./install.sh
    

    Для открытого контура: Подключите Docker Registry:

    docker login registry.analyticworkspace.ru
    # Отобразится запрос о необходимости ввести учетную запись. Введите данные учетной записи, ранее использованной для скачивания дистрибутива
    
  9. Запустите скрипт create_project_dirs.sh для того чтобы создать необходимые директории:

    chmod +x create_project_dirs.sh
    ./create_project_dirs.sh
    
  10. Выполните запуск Системы и примените миграции:

    docker compose up -d
    docker compose exec backend php yii migrate --interactive=0 | tee ./backend_migration.log
    docker compose exec backend php yii run-code-migrations | tee ./backend_code_migration.log
    docker compose exec etl-api /app/manage migrate | tee ./etl_api_migration.log
    
  11. Выполните очистку docker от старых образов.

    Данный пункт не обязателен, но является рекомендацией. Данная операция позволяет избежать лишнего использования дискового пространства.

    set -e; TAG=$(grep "^AW_VERSION" .env | cut -f2 -d '='); REG=$(grep "^LOCAL_REGISTRY" .env | cut -f 2 -d '='); for i in $(docker images --format "{{.Repository}}:{{.Tag}}" "${REG}/*" | grep -v ${TAG} ); do docker rmi ${i}; done