# Как обновить Printum

#### Когда использовать

Перед обновлением Мониторинга или ПринтМенеджера в продуктивной среде.

---

#### Предусловия

- Доступ к серверам по SSH.
- Дистрибутивы получены и размещены на серверах вместе с хеш-суммами.
- Сделан снапшот ВМ или резервная копия — **обязательно**.

---

### Резервная копия

При создании резервной копии предпочтительнее воспользоваться инструментами гипервизора (снапшот или бэкап).

Если нет возможности использовать инструменты гипервизора то, воспользуйтесь инструкцией по созданию резервной копии системы:
[Создание резервной копии](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/sozdanie-rezervnoi-kopii)

Восстановление: [Восстановление из резервной копии](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/vosstanovlenie-iz-rezervnoi-kopii)

---

### Базовая конфигурация: онлайн-обновление

```bash
# 1. Обновить М
sudo curl -L https://s3.printum.io/box/monitoring/install.sh | sudo -E bash

# 2. Убедиться что М работает — открыть ЛК, проверить доступность панели администратора Монитоирнга.

# 3. Обновить ПМ
sudo curl -L https://s3.printum.io/distrib/printum-printmanager/install.sh | sudo -E bash
```
Если используется шифрование конфигурационного файла — добавить переменную `ENV_VAULT_PASSWORD=<password>` в команду запуска обновления.

---

### Базовая конфигурация: офлайн-обновление

```
# Перенести дистрибутивы на сервер
scp monitoring-x.y.z.tar.gz <пользователь>@<ip>:/home/<каталог_пользователя>
scp monitoring-x.y.z.tar.gz.sha512 <пользователь>@<ip>:/home/<каталог_пользователя>
scp printmanager-x.y.z.tar.gz <пользователь>@<ip>:/home/<каталог_пользователя>
scp printmanager-x.y.z.tar.gz.sha512 <пользователь>@<ip>:/home/<каталог_пользователя>

# Проверить целостность
cd /home/<каталог_пользователя>
sha512sum -c monitoring-x.y.z.tar.gz.sha512
sha512sum -c printmanager-x.y.z.tar.gz.sha512

# Обновить М
tar xzvf monitoring-x.y.z.tar.gz
cd monitoring-x.y.z
sudo -E ./install.sh

# После запуска М — обновить ПМ
cd /home/<каталог_пользователя>
tar xzvf printmanager-x.y.z.tar.gz
cd printmanager-x.y.z
sudo -E ./install.sh
```

Если используется шифрование конфигурационного файла — добавить переменную `ENV_VAULT_PASSWORD=<password>` в команду запуска обновления.

---

### Балансировщик: обновление через скрипт массовой установки

Если система устанавливалась через `install_all_offline.sh`, то обновить пути к дистрибутивам в config.ini:\
В разделе [General] указать путь где хранятся новые дистрибутивы на сервере:
```bash
[General]
MON_DIST_PATH = /home/user/printum-x.x.x.tar.gz
PM_DIST_PATH = /home/user/printmanager-x.x.x.tar.gz
```
Убедится, что в каждом из разделов Мониторинга и ПринтМенеджера переменная SKIP установлена в нужное положение:
```
SKIP = false  #если пропускать обновление для данного сервера не нужно.
SKIP = true   #если требуется пропустить обновление данного сервера.
```
Сохранить изменения в файле и запустить обновление:
```
sudo ./install_all_offline.sh
```
---

### Балансировщик: ручное обновление

Если скрипт массовой установки не использовался:

1. Обновить Мониторинг согласно вышеизложенной инструкции по базовой конфигурации.
2. Остановить контейнеры ПринтМенеджера на всех нодах:
```bash
ssh user@pm1 "cd /opt/printmanager && sudo docker-compose down"
ssh user@pm2 "cd /opt/printmanager && sudo docker-compose down"
ssh user@pm3 "cd /opt/printmanager && sudo docker-compose down"
```
3. Обновить ПринтМенеджер на первой ноде согласно вышеизложенной инструкции по базовой конфигурации.
4. Обновить остальные ПринтМенеджеры — можно параллельно.
5. Проверить панель доступность нод в веб-интерфейсе балансирвощика.
6. Проверить доступность ПринтМенеджера по адресу балансировщика.
---

### Проверка после обновления

```bash
# Версии компонентов
cat /opt/printum/.version
cat /opt/printmanager/.version

# Статус контейнеров
cd /opt/printum && sudo docker-compose ps
cd /opt/printmanager && sudo docker-compose ps
```

Все контейнеры должны быть в статусе `Up`. Контейнеры в статусе `Exit` или `Restarting` — признак проблемы.

Функциональные проверки:
- Открывается Личный Кабинет и панель администратора Мониторинга.
- Открывается панель администратора ПринтМенеджер.
- Синхронизация Мониторинг–ПринтМенеджер завершается без ошибок.
- Авторизация на МФУ работает.
- Тестовое задание уходит на печать.

---

### Если что-то пошло не так

Типовые ошибки после обновления — в разделе  "Устранение неисправностей":

- [Встала печать после обновления — Bad response 500](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/vstala-pecat-posle-obnovleniia-bad-response-from-monitoring-500)
- [Счётчики не обновляются после обновления М](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/scetciki-ne-obnovliaiutsia-posle-obnovleniia-monitoringa)
- [SSL: Hostname mismatch после обновления](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/ssl-hostname-mismatch-posle-obnovleniia)
- [Синхронизация Мониторинг–ПринтМенеджер завершается ошибкой 403](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/sinxronizaciia-m-pm-zaversaetsia-osibkoi-403-posle-obnovleniia)
- [Ошибка MultipleObjectsReturned при обновлении ПринтМенеджер 4.3 → 4.4](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/osibka-multipleobjectsreturned-pri-obnovlenii-pm-43-44)

---

## Связанные страницы

- [Обновление и обслуживание](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie)
- [Как работает синхронизация Мониторинга и ПринтМенеджера](http://wiki.printum.io/books/1-arxitektura-i-koncepcii/page/kak-rabotaet-sinxronizaciia-monitoringa-i-printmenedzera)
- [Как работает отказоустойчивый ПринтМенеджер](http://wiki.printum.io/books/1-arxitektura-i-koncepcii/page/kak-rabotaet-otkazoustoicivyi-printmenedzer)