Инструкция по обновлению сервера SmartPlayer в Docker сборке: различия между версиями
Нет описания правки |
|||
| (не показано 5 промежуточных версий 2 участников) | |||
| Строка 23: | Строка 23: | ||
=== '''Тестирование миграций''' === | === '''Тестирование миграций''' === | ||
Перед обновлением серверного приложения на машине пользователя следует провести тестирование миграций по инструкции, запросить которую можно у специалиста технической поддержки SmartPlayer. | Перед обновлением серверного приложения на машине пользователя следует провести тестирование миграций по инструкции, запросить которую можно у специалиста технической поддержки SmartPlayer. | ||
== '''Бэкапы (Backup)''' == | |||
{{Note|Бэкап (или резервное копирование) — это процесс создания копии данных или информации с целью восстановления в случае потери, повреждения или удаления оригинальных данных.|warn}} | |||
=== '''Логика работы бэкапов''' === | |||
Пользователь подключается к сервер по протоколу “SSH”. С помощью команд создаёт бэкап и выгружает его к себе, с помощью специальной утилиты “SCP“. | |||
[[File:Бэкапы.png|thumb|center| Пример отображения логики работы бэкапов|800px]] | |||
== '''Механика работы бэкапов''' == | |||
Для начала стоит уточнить что делается полноценный Backup базы данных. | |||
Чтобы получить Backup базы данных необходимо подключиться к серверу используя технологию SSH. | |||
{{Note|SSH (Secure Shell) — это сетевой протокол, который позволяет пользователям безопасно управлять серверами и другими компьютерами через незащищенные сети, такие как интернет. SSH используется для безопасного взаимодействия с удаленными системами и обычно служит безопасной альтернативой нешифрованным протоколам,|warn}} | |||
После подключения пользователю необходимо прописать команду : | |||
<code>~$ cd smartplayer</code> | |||
~$ cd - команда отвечающая за перенаправление в конкретную папку/<br> | |||
После перехода в нужную папку необходимо запустить команду для создания бэкапа. Это команда: | |||
<code>./mysql_backup/mysql_backup.sh</code> | |||
Следующим шагом необходимо найти строку: | |||
<code>Backups dir</code> | |||
В ней прописан путь до всех бэкапов. В этом пути и хранятся все бэкапы.<br> | |||
Рассмотренный в нашем случае путь: "/home/smartplayer/smartplayer/data/mysql-dumps/"<br> | |||
После выполнений предыдущих действий необходимо прописать две команды: | |||
# <code>cd /home/smartplayer/smartplayer/data/mysql-dumps/</code> - позволяет пользователю использовать папку где хранятся бэкапы | |||
# <code>$ls</code> - показывает все хранящиеся файлы | |||
[[File:Команды.png|thumb|center| Пример команд|800px]] | |||
[[File:Список_файлов.png|thumb|center| Пример отображения списка файлов после выполнения команд|800px]] | |||
[[File:Результат_работ.png|thumb|center| Пример отображения результата описанного выше процесса|800px]] | |||
Далее пользователю необходимо обратить внимание на строку: | |||
<code>Dump filename:</code> | |||
В ней находится название файла. В данном случае это: "./smartplayer.2023-09-05_10-04-21.sql.gz"<br> | |||
После находим самый последний бэкап. Его необходимо перенести на компьютер, с помощью специальной программы: “SCP“.<br> | |||
Чтобы выкачать последний бэкап к пользователю на компьютер, необходимо использовать команду: | |||
<code>scp smartplayer@<Ip-адрес сервера на котором работает платформа>/:<путь до бэкапа> ~/<Путь куда необходимо перенести файл></code> | |||
{{Note|В фрагменте “~/<путь куда необходимо перенести файл>“ - пользователь может прописать любую директорию на своём устройстве.|warn}} | |||
[[File:Информация.png|thumb|center| Пример информации|800px]] | |||
=== '''Итог''' === | |||
После этого действия файл бэкапа должен появится у пользователя на ПК. | |||
=== '''Получить дистрибутивы от представителя SmartPlayer''' === | |||
Получить дистрибутив сервера и личного кабинет можно URL-ссылке ''https://jenkins_dists_update_platform.hb.bizmrg.com/sp_update_ver_buildNumber_numb.zip'' | |||
=== '''Обновление серверного приложения на машине заказчика''' === | === '''Обновление серверного приложения на машине заказчика''' === | ||
Команды, указанные в данной инструкции, выполняются от имени пользователя smartplayer и папки, которую обычно называют smartplayer, она содержит всю сборку, в том числе и файл '''.env и docker-compose.yml''' | |||
[[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | |||
Если приложение установлено под пользователем с root-правами, тогда и обновление необходимо производить под этим пользователем. Владельца приложения можно определить по выводу команды '''ls''' (на скриншоте выше). Необходимо зайти в личный кабинет и зафиксировать какие компоненты системы работают/не работают, а также сколько устройств онлайн/оффлайн. | |||
Следующим шагом остановите nginx с помощью команды:<br> | |||
<code> docker-compose stop web </code><br> | |||
<code>docker-compose stop web</code> | [[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | ||
Далее необходимо остановить серверное приложение с помощью команды:<br> | |||
<code>docker exec -it smartplayer_backend_1 bash -c "pm2 stop all"</code> | <code> docker exec -it smartplayer_backend_1 bash -c "pm2 stop all" </code><br> | ||
[[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | |||
<code>./mysql_backup/mysql_backup.sh</code> | Создаем дамп базы данных:<br> | ||
<code>./mysql_backup/mysql_backup.sh</code><br> | |||
<code>ls -lah1 ./data/mysql-dumps/</code> | Также проверяем дамп что он не пустой:<br> | ||
<code> ls -lah1 ./data/mysql-dumps/ </code><br> | |||
<code>SERVER_APP_BACKUP_DIR="$(docker exec smartplayer_backend_1 bash -c 'node -p "require(\"./package.json\").version"')" | [[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | ||
<code>SERVER_APP_BACKUP_DIR="backend/app_v$SERVER_APP_BACKUP_DIR" | Создать бэкап старой версии серверного приложения.<br> | ||
<code>mkdir "$SERVER_APP_BACKUP_DIR" | Ниже приведена последовательность команд, которая создает папку ''/backend/app_v_version, где version'' — это номер версии серверного приложения (получаемый из файла package.json), в которую переносит содержимое папки ''/backend/app/''.<br> | ||
<code>mv backend/app/{*,.[^.]*} "$SERVER_APP_BACKUP_DIR"</code>< | <code> SERVER_APP_BACKUP_DIR="$(docker exec smartplayer_backend_1 bash -c 'node -p "require(\"./package.json\").version"')"</code><br> | ||
{{Note| | <code>SERVER_APP_BACKUP_DIR="backend/app_v$SERVER_APP_BACKUP_DIR" </code><br> | ||
<code> mkdir "$SERVER_APP_BACKUP_DIR"</code><br> | |||
<code>unzip | <code>mv backend/app/{*,.[^.]*} "$SERVER_APP_BACKUP_DIR" </code><br> | ||
{{Note|При копировании команды из документа в буфер обмена и перед выполнением ее на сервере, необходимо обработать ее в текстовом редакторе «Блокнот» – команда должна быть прописана в одну строку и без переносов строки.|warn}} | |||
<code> | В процессе выполнения команды появится сообщение о невозможности переноса папки ''backend/app/logs'' из за отсутствия прав на нее, потому что доступ к папке имеет пользователь с root-правами. Такое сообщение появляется, если выполнять команду от имени пользователя smartplayer. Необходимость копирования папки ''logs'' отсутствует, так как после обновления сервера, логи продолжат создаваться в этой же папке. Если команда выполнена под пользователем с root-правами, тогда и папка ''logs'' будет перенесена – это надо будет учитывать, при копировании новой версии серверного приложения.<br> | ||
Произвести проверку содержимого папки с созданной копией:<br> | |||
<code> | <code>ls -la $SERVER_APP_BACKUP_DIR</code><br> | ||
[[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | |||
<code>cp -t backend/app "$SERVER_APP_BACKUP_DIR/pm2.app.config.js | Содержимое папки ''/backend/app/'' должно быть пустым, за исключением папки ''logs'':<br> | ||
<code>cp -n -R -t backend/app/config $SERVER_APP_BACKUP_DIR/config/*</code> | <code>ls -la ./backend/app/</code><br> | ||
* | [[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | ||
Создаётся бэкап старой версии личного кабинет:<br> | |||
<code> | <code> FRONTEND_BACKUP_DIR=$(date +"cms/cms_%Y%m%d%H%M%S")</code><br> | ||
<code>docker exec -i smartplayer_backend_1 bash -c "LOG_LEVEL=DEBUG ./cli.js db migrate" | <code>mkdir "$FRONTEND_BACKUP_DIR" </code><br> | ||
<code> mv cms/cms/{*,.[^.]*} "$FRONTEND_BACKUP_DIR"</code><br> | |||
{{Note|При копировании команды из документа в буфер обмена и перед выполнением ее на сервере, необходимо обработать ее в текстовом редакторе «Блокнот» – команда должна быть прописана в одну строку и без переносов строки.|warn}} | |||
Еще одним шагом является проверка содержимого папки с созданной копией:<br> | |||
<code>ls -la $FRONTEND_BACKUP_DIR</code><br> | |||
<code>docker exec - | Содержимое папки ''/cms/cms/'' должно быть пустым: | ||
<code>ls -la ./cms/cms/</code> | |||
<code>docker exec -it smartplayer_backend_1 bash -c "pm2 list"</code> | [[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | ||
== '''Обновление файлов серверного приложения''' = | |||
Разархивируем .zip-архив в папку ''update'':<br> | |||
<code> | <code>unzip sp_update_bv_v2.version_buildNumber_number.zip -d update</code><br> | ||
Копируем из папки ''/update/cms/'' все файлы в папку ''/cms/cms/'': | |||
<code>cp -r ./update/cms/. ./cms/cms/</code><br> | |||
[[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | |||
Копируем из папки ''/update/server/'' все файлы в папку ''/backend/app/'':<br> | |||
<code>cp -r ./update/server/. ./backend/app/</code><br> | |||
[[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | |||
Копируем из папки ''/update/serverAdminLicensing/'' все файлы в папку ''/cms/admin/'': | |||
<code>cp -r ./update/serverAdminLicensing/. ./cms/admin/</code><br> | |||
Копируем из папки ''/update/widgets/'' все файлы в папку ''/widgets/'': <br> | |||
<code>cp -r ./update/widgets/. ./widgets/</code><br> | |||
Переносим папки и конфигурации из архива в новую версию: '''logs, pm2.app.config.js, config/*'''. | |||
{{Note|default.js и default.schema.json затирать не надо, используем ключ -n|warn}} | |||
<code> cp -t backend/app "$SERVER_APP_BACKUP_DIR/pm2.app.config.js"</code><br> | |||
<code>cp -n -R -t backend/app/config $SERVER_APP_BACKUP_DIR/config/* </code><br> | |||
[[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | |||
{{Note|После обновления файлов серверного приложения, в случае, если для обновления серверного приложения требуется обновление контейнеров docker, запускаем скрипт обновления контейнеров и изменения конфигураций (migrate_to_new_structure_dv_*.run)|warn}} | |||
Перезапускаем docker-compose:<br> | |||
<code>docker-compose down && docker-compose up -d</code><br> | |||
Выполняем миграции MySQL:<br> | |||
<code>docker exec -i smartplayer_backend_1 bash -c "LOG_LEVEL=DEBUG ./cli.js db migrate" > mig_2024.03.24.log 2> migration_error.log</code><br> | |||
Если миграции завершились логом "'''All migrations are rolled.'''", то они выполнены успешно. Если нет, то обратиться к представителю компании SmartPlayer для дальнейший переадресации проблемы в команду разработку, чтобы выяснить причину не произошедшей миграции. | |||
[[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | |||
Выполняем миграции Mongo:<br> | |||
<code>docker exec $(docker ps -q -f name=backend | head -n1) bash -c "./cli.js db mongo-migrate"</code><br> | |||
Проверяем работоспособность серверного приложения. <br> | |||
Для этого, в течении двух минут вызывать список процессов '''pm2''' и убедиться, что процессы не «падают» (в поле '''uptime''' время должно расти. В соседнем поле, обозначающем количество перезапусков, значение изменяться не должно):<br> | |||
<code>docker exec -it smartplayer_backend_1 bash -c "pm2 list"</code><br> | |||
[[File:Консоль отображение 1.png|thumb|center| Пример отображения в консоли|800px]] | |||
Произвести проверку работы личного кабинета. Количество устройств on-line должно равняться количеству устройств в сети до обновления. | |||
Удаление файлов обновления:<br> | |||
<code> rm -r -f ./update/</code><br> | |||
<code>rm sp_update_bv_v2.version_buildNumber_number.zip</code><br> | |||
{{Note|'''По возможности лог-файл миграции mig_2024.03.24.log передать сотруднику SmartPlayer.'''|warn}} | |||
== '''Обновление личного кабинета''' == | == '''Обновление личного кабинета''' == | ||
* Загрузить архив с личным кабинетом на машину пользователя доступным способом | * Загрузить архив с личным кабинетом на машину пользователя доступным способом | ||
* Зайти в личный кабинет и зафиксировать какие компоненты системы работают, какие нет, сколько устройств онлайн/оффлайн | * Зайти в личный кабинет и зафиксировать какие компоненты системы работают, какие нет, сколько устройств онлайн/оффлайн | ||
* Создать бэкап старой версии личного кабинета: | * Создать бэкап старой версии личного кабинета: | ||
<code>FRONTEND_BACKUP_DIR=$(date +"cms/cms_%Y%m%d%H%M%S") && \</code> | <code>FRONTEND_BACKUP_DIR=$(date +"cms/cms_%Y%m%d%H%M%S") && \</code><br> | ||
<code>mkdir "$FRONTEND_BACKUP_DIR" && \</code> | <code>mkdir "$FRONTEND_BACKUP_DIR" && \</code><br> | ||
<code>mv cms/cms/{*,.[^.]*} "$FRONTEND_BACKUP_DIR"</code> | <code>mv cms/cms/{*,.[^.]*} "$FRONTEND_BACKUP_DIR"</code> | ||
* Распаковать ЛК новой версии: | * Распаковать ЛК новой версии: | ||
| Строка 79: | Строка 146: | ||
== '''"Откат" серверного приложения на прежнюю версию''' == | == '''"Откат" серверного приложения на прежнюю версию''' == | ||
* Убедиться, что "pm2" процессы остановлены: | * Убедиться, что "pm2" процессы остановлены: | ||
<code>docker exec -it | <code>docker exec -it smartplayer_backend_1 bash -c "pm2 list"</code> | ||
* Если процессы не остановлены, то остановить: | * Если процессы не остановлены, то остановить: | ||
<code>docker exec -it | <code>docker exec -it smartplayer_backend_1 bash -c "pm2 stop all"</code> | ||
* Если осуществлялся запуск миграций, то откатить миграции, восстановив базу данных из дампа: | * Если осуществлялся запуск миграций, то откатить миграции, восстановив базу данных из дампа: | ||
<code>source .env</code> | <code>source .env</code><br> | ||
<code>zcat dumpfile.sql.gz | docker exec -i smartplayer_mysql_1 mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE</code> | <code>zcat dumpfile.sql.gz | docker exec -i smartplayer_mysql_1 mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE</code> | ||
* Вернуть папки "logs", "public", "assets" в бэкап | * Вернуть папки "logs", "public", "assets" в бэкап | ||
| Строка 89: | Строка 156: | ||
* Проверить конфиги | * Проверить конфиги | ||
* Запустить "pm2": | * Запустить "pm2": | ||
<code>docker exec -it | <code>docker exec -it smartplayer_backend_1 bash -c "pm2 start pm2.app.config.js"</code> | ||
* Запустить Nginx: | * Запустить Nginx: | ||
<code>docker-compose start web</code> | <code>docker-compose start web</code> | ||
Текущая версия от 15:08, 1 февраля 2026
Описание ситуации
Данная страница содержит в себе информацию связанную с обновлением сервера SmartPlayer при работе со сборщиком Docker. Ниже будет представлен алгоритм, который позволит настроить данный процесс правильно.
Глоссарий
- Серверное приложение - в контексте данной страницы это nodejs-приложение
- Личный кабинет (ЛК) - frontend js приложение
- Машина заказчика - физический сервер, который следует обновить
Сборка
Необходимо получить дистрибутивы от представителя SmartPlayer.
Сборка серверного приложения
Для обновления серверного приложения необходимо собрать серверное приложение определённой, последней версии и обновить серверное приложение. Если данный шаг не нужен, то его можно пропустить. Кроме серверного приложения необходимо получить у специалиста технической поддержки собранный node modules.
Сборка ЛК
Если требуется обновить ЛК, то необходимо получить у специалиста технической поддержки собранный ЛК той версии, на которую следует обновить ЛК. Если данный шаг не нужен, то его можно пропустить.
Передача файлов
Собранные архивы серверного приложения, node modules, ЛК следует разместить на машине заказчика. Перед обновлением серверного приложения проводится тестирований миграций, для чего с машины пользователя снимается дамп базы данных и переносится на тестовую машину.
Перед обновлением серверного приложения и личного кабинета
Производится проверка личного кабинета и фиксируется какие компоненты системы работают, какие нет, а также сколько устройств онлайн/оффлайн для того чтобы после обновления понимать:
- Что работало и сломали
- Что не работало и починили
- Что не работало и продолжает не работать
- Что работало и продолжает работать
Обновление серверного приложения
Ниже будет представлен алгоритм, по которому происходит обновление серверного приложения.
Тестирование миграций
Перед обновлением серверного приложения на машине пользователя следует провести тестирование миграций по инструкции, запросить которую можно у специалиста технической поддержки SmartPlayer.
Бэкапы (Backup)
Логика работы бэкапов
Пользователь подключается к сервер по протоколу “SSH”. С помощью команд создаёт бэкап и выгружает его к себе, с помощью специальной утилиты “SCP“.

Механика работы бэкапов
Для начала стоит уточнить что делается полноценный Backup базы данных. Чтобы получить Backup базы данных необходимо подключиться к серверу используя технологию SSH.
После подключения пользователю необходимо прописать команду :
~$ cd smartplayer
~$ cd - команда отвечающая за перенаправление в конкретную папку/
После перехода в нужную папку необходимо запустить команду для создания бэкапа. Это команда:
./mysql_backup/mysql_backup.sh
Следующим шагом необходимо найти строку:
Backups dir
В ней прописан путь до всех бэкапов. В этом пути и хранятся все бэкапы.
Рассмотренный в нашем случае путь: "/home/smartplayer/smartplayer/data/mysql-dumps/"
После выполнений предыдущих действий необходимо прописать две команды:
cd /home/smartplayer/smartplayer/data/mysql-dumps/- позволяет пользователю использовать папку где хранятся бэкапы$ls- показывает все хранящиеся файлы
Далее пользователю необходимо обратить внимание на строку:
Dump filename:
В ней находится название файла. В данном случае это: "./smartplayer.2023-09-05_10-04-21.sql.gz"
После находим самый последний бэкап. Его необходимо перенести на компьютер, с помощью специальной программы: “SCP“.
Чтобы выкачать последний бэкап к пользователю на компьютер, необходимо использовать команду:
scp smartplayer@<Ip-адрес сервера на котором работает платформа>/:<путь до бэкапа> ~/<Путь куда необходимо перенести файл>
Итог
После этого действия файл бэкапа должен появится у пользователя на ПК.
Получить дистрибутивы от представителя SmartPlayer
Получить дистрибутив сервера и личного кабинет можно URL-ссылке https://jenkins_dists_update_platform.hb.bizmrg.com/sp_update_ver_buildNumber_numb.zip
Обновление серверного приложения на машине заказчика
Команды, указанные в данной инструкции, выполняются от имени пользователя smartplayer и папки, которую обычно называют smartplayer, она содержит всю сборку, в том числе и файл .env и docker-compose.yml
Если приложение установлено под пользователем с root-правами, тогда и обновление необходимо производить под этим пользователем. Владельца приложения можно определить по выводу команды ls (на скриншоте выше). Необходимо зайти в личный кабинет и зафиксировать какие компоненты системы работают/не работают, а также сколько устройств онлайн/оффлайн.
Следующим шагом остановите nginx с помощью команды:
docker-compose stop web
Далее необходимо остановить серверное приложение с помощью команды:
docker exec -it smartplayer_backend_1 bash -c "pm2 stop all"
Создаем дамп базы данных:
./mysql_backup/mysql_backup.sh
Также проверяем дамп что он не пустой:
ls -lah1 ./data/mysql-dumps/
Создать бэкап старой версии серверного приложения.
Ниже приведена последовательность команд, которая создает папку /backend/app_v_version, где version — это номер версии серверного приложения (получаемый из файла package.json), в которую переносит содержимое папки /backend/app/.
SERVER_APP_BACKUP_DIR="$(docker exec smartplayer_backend_1 bash -c 'node -p "require(\"./package.json\").version"')"
SERVER_APP_BACKUP_DIR="backend/app_v$SERVER_APP_BACKUP_DIR"
mkdir "$SERVER_APP_BACKUP_DIR"
mv backend/app/{*,.[^.]*} "$SERVER_APP_BACKUP_DIR"
В процессе выполнения команды появится сообщение о невозможности переноса папки backend/app/logs из за отсутствия прав на нее, потому что доступ к папке имеет пользователь с root-правами. Такое сообщение появляется, если выполнять команду от имени пользователя smartplayer. Необходимость копирования папки logs отсутствует, так как после обновления сервера, логи продолжат создаваться в этой же папке. Если команда выполнена под пользователем с root-правами, тогда и папка logs будет перенесена – это надо будет учитывать, при копировании новой версии серверного приложения.
Произвести проверку содержимого папки с созданной копией:
ls -la $SERVER_APP_BACKUP_DIR
Содержимое папки /backend/app/ должно быть пустым, за исключением папки logs:
ls -la ./backend/app/
Создаётся бэкап старой версии личного кабинет:
FRONTEND_BACKUP_DIR=$(date +"cms/cms_%Y%m%d%H%M%S")
mkdir "$FRONTEND_BACKUP_DIR"
mv cms/cms/{*,.[^.]*} "$FRONTEND_BACKUP_DIR"
Еще одним шагом является проверка содержимого папки с созданной копией:
ls -la $FRONTEND_BACKUP_DIR
Содержимое папки /cms/cms/ должно быть пустым:
ls -la ./cms/cms/
= Обновление файлов серверного приложения
Разархивируем .zip-архив в папку update:
unzip sp_update_bv_v2.version_buildNumber_number.zip -d update
Копируем из папки /update/cms/ все файлы в папку /cms/cms/:
cp -r ./update/cms/. ./cms/cms/
Копируем из папки /update/server/ все файлы в папку /backend/app/:
cp -r ./update/server/. ./backend/app/
Копируем из папки /update/serverAdminLicensing/ все файлы в папку /cms/admin/:
cp -r ./update/serverAdminLicensing/. ./cms/admin/
Копируем из папки /update/widgets/ все файлы в папку /widgets/:
cp -r ./update/widgets/. ./widgets/
Переносим папки и конфигурации из архива в новую версию: logs, pm2.app.config.js, config/*.
cp -t backend/app "$SERVER_APP_BACKUP_DIR/pm2.app.config.js"
cp -n -R -t backend/app/config $SERVER_APP_BACKUP_DIR/config/*
Перезапускаем docker-compose:
docker-compose down && docker-compose up -d
Выполняем миграции MySQL:
docker exec -i smartplayer_backend_1 bash -c "LOG_LEVEL=DEBUG ./cli.js db migrate" > mig_2024.03.24.log 2> migration_error.log
Если миграции завершились логом "All migrations are rolled.", то они выполнены успешно. Если нет, то обратиться к представителю компании SmartPlayer для дальнейший переадресации проблемы в команду разработку, чтобы выяснить причину не произошедшей миграции.
Выполняем миграции Mongo:
docker exec $(docker ps -q -f name=backend | head -n1) bash -c "./cli.js db mongo-migrate"
Проверяем работоспособность серверного приложения.
Для этого, в течении двух минут вызывать список процессов pm2 и убедиться, что процессы не «падают» (в поле uptime время должно расти. В соседнем поле, обозначающем количество перезапусков, значение изменяться не должно):
docker exec -it smartplayer_backend_1 bash -c "pm2 list"
Произвести проверку работы личного кабинета. Количество устройств on-line должно равняться количеству устройств в сети до обновления.
Удаление файлов обновления:
rm -r -f ./update/
rm sp_update_bv_v2.version_buildNumber_number.zip
Обновление личного кабинета
- Загрузить архив с личным кабинетом на машину пользователя доступным способом
- Зайти в личный кабинет и зафиксировать какие компоненты системы работают, какие нет, сколько устройств онлайн/оффлайн
- Создать бэкап старой версии личного кабинета:
FRONTEND_BACKUP_DIR=$(date +"cms/cms_%Y%m%d%H%M%S") && \
mkdir "$FRONTEND_BACKUP_DIR" && \
mv cms/cms/{*,.[^.]*} "$FRONTEND_BACKUP_DIR"
- Распаковать ЛК новой версии:
unzip frontend_2.103.23_api.smartplayer.org.zip -d cms/cms
- Осуществить проверку работоспособности сервера и ЛК, запросив у специалистов технической поддержки специальный чек-лист проверки работоспособности сервера и личного кабинета после установки обновления
"Откат" серверного приложения на прежнюю версию
- Убедиться, что "pm2" процессы остановлены:
docker exec -it smartplayer_backend_1 bash -c "pm2 list"
- Если процессы не остановлены, то остановить:
docker exec -it smartplayer_backend_1 bash -c "pm2 stop all"
- Если осуществлялся запуск миграций, то откатить миграции, восстановив базу данных из дампа:
source .env
zcat dumpfile.sql.gz | docker exec -i smartplayer_mysql_1 mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE
- Вернуть папки "logs", "public", "assets" в бэкап
- Вернуть серверного приложение из бэкапа, заменив содержимое папки "backend/app"
- Проверить конфиги
- Запустить "pm2":
docker exec -it smartplayer_backend_1 bash -c "pm2 start pm2.app.config.js"
- Запустить Nginx:
docker-compose start web