Обновление и обслуживание
Приложение обновляется как любое приложение Webasyst. Эта глава — как сделать это безопасно и что проверить после.
Перед обновлением
Когда это нужно. Каждый раз перед установкой новой версии.
Что сделать.
- Сделайте резервную копию базы данных целиком. Если нужен минимум — таблицы
pwa_settings,wa_app_settingsи таблицы с названиемpwa_push_…. Как делать копию — спросите у хостинга или в панели хостинга. - Скопируйте папку
wa-data/public/pwa: в ней служебные файлы витрин (иконки, Manifest, офлайн-страницы). - Проверьте версию PHP. PWA 1.6.2 требует PHP 8.2 или новее. Проверено на 8.2, 8.3, 8.4 и 8.5. На PHP 7.4–8.1 обновление не установится; сначала смените PHP у хостинга и убедитесь, что сайт работает. На 8.4 и 8.5 сторонние библиотеки могут записывать предупреждения (deprecation) в журнал ошибок PHP: при стандартной настройке сервера они на странице не видны.
- Проверьте версию Webasyst Installer: нужна 2.7.0 или новее (Установщик сам предложит обновиться).
- Запишите, какая версия стоит сейчас (страница «Установщик») и сколько подписчиков (плашка вверху страницы PWA), чтобы сравнить после обновления.
Что должно получиться. У вас есть читаемая копия базы и папки wa-data/public/pwa.
Если не получилось. Не обновляйтесь, пока не получилось: без копии вернуть настройки и ключи будет нельзя.
Безопасное обновление
Когда это нужно. Вышла новая версия.
Что сделать.
- Обновите приложение через Установщик (Webasyst Installer). Если файлы обновляет разработчик или хостинг, они заменяют папку
wa-apps/pwa. - Очистите
wa-cache(кеш Webasyst), если обновление выполнялось заменой файлов: иначе Webasyst использует старую карту классов, и новые классы приложения не находятся. Установщик кеш сбрасывает сам. Если страница выглядит «по-старому», обновите её с очисткой кеша браузера (Ctrl+F5). - Откройте любую страницу сайта. Служебные скрипты обновления выполняются при первом запросе после обновления.
- Для версий 1.6.1 → 1.6.2: база не меняется, подписки и ключи сохраняются, пересохранять витрины и подписываться заново не нужно.
Что должно получиться. Приложение открывается без ошибок, версия обновлена.
Если не получилось. Верните файлы предыдущей версии, очистите wa-cache: данные при 1.6.1 → 1.6.2 не менялись, базу откатывать не нужно (при откате вернётся прежний формат шифрования push).
Что проверить после обновления
- Меню → Диагностика. Для каждой витрины не должно быть красных карточек «Не пройдено» (глава 7).
- В плашке вверху страницы приложения: «PWA статус: Активирован», число подписчиков не уменьшилось, «Push-ключи (VAPID)» — Shared или Legacy, без красного предупреждения.
- Откройте витрину в браузере: она загружается, баннер установки показывается, как раньше.
- Если у вас «Премиум»: откройте страницу «Push-уведомления» — видна ли кнопка «Создать…»; при необходимости отправьте тест себе (на устройство, на которое вы подписались сами).
- Журнал
wa-log/pwa-update.log(его может открыть хостинг или разработчик): в записи об обновлении не должно быть ненулевого числаfailed. Витрины со статусомskippedилиfailedоткройте в настройках и нажмите «Сохранить». - Если вы обновлялись с версии до 1.6.2 и покупатели жалуются, что старое содержимое «застряло» — FAQ: не обновляется контент.
Обновление у покупателей
Новый Service Worker устанавливается в браузере покупателя при его следующем визите и активируется как обычное обновление (появляется уведомление «обновить» либо после закрытия вкладок). Кеши, подписки на push, ключи VAPID, адрес запуска и область видимости обновление не очищает (глава 5).
VAPID-ключи
Что нужно помнить. Приложение никогда не меняет ключи VAPID само — ни при обновлении, ни при сохранении настроек, ни при открытии страницы. Подписки привязаны к ключу: после смены ключа браузеры не принимают рассылку, пока покупатель не подпишется заново.
Если в плашке красная ошибка «keys are missing or incomplete» или предупреждение «ключ отличается от того, с которым созданы подписки».
- Не очищайте подписчиков и не создавайте ключи заново.
- Восстановите настройки приложения из резервной копии (ключи VAPID входят в настройки). Копия должна быть той же даты или новее подписок.
- Обновите страницу: статус должен стать «Shared» или «Legacy», предупреждение исчезнуть.
Осознанная смена ключей нужна только если ключ скомпрометирован или этого требует безопасность. Это решение с последствиями: все подписчики перестанут получать рассылку, пока не подпишутся заново; штатной кнопки «заменить ключ» в интерфейсе нет. Если вы решились:
- Сделайте и проверьте копию базы.
- Письменно подтвердите внутри команды, что подписчики будут подписываться заново.
- Попросите разработчика заменить ключи в настройках (способ правки записи согласуйте с ним).
- На странице «Push-уведомления» нажмите «Clear all subscribers» для затронутых витрин: это подтверждает смену, и предупреждение исчезает.
- Проверьте статус ключей и объявите покупателям, что нужно подписаться заново.
Смена или восстановление ключа витрины также снимает персональные привязки устройств (покупатели подтвердят устройство заново) (глава 6).
Смена адреса витрины или домена
Установленное приложение, Service Worker и подписки на push привязаны к адресу сайта (домену, порту и пути). Если вы меняете домен или переносите витрину в подкаталог, браузеры покупателей считают это другим сайтом: установленные приложения и подписки со старого адреса на новый не переносятся.
Что сделать.
- Перед сменой адреса сделайте копию и предупредите, что покупателям, возможно, потребуется заново установить приложение и подписаться на push.
- После смены откройте «Информация о приложении» для витрины с новым адресом: проверьте Start URL и область видимости: адрес не должен вести на старый домен (чужой домен приложение само не принимает — использует только путь).
- Нажмите «Сохранить», затем откройте «Диагностика».
- Если витрина стала отвечать на двух доменах (зеркало), настройте каждую витрину отдельно (глава 3).
Если не получилось. Если у покупателей после смены адреса «пропала» установка, — это ожидаемо: они устанавливают приложение с нового адреса заново.
Что делать при восстановлении базы из копии
Если вы восстановили базу из резервной копии, то:
- Проверьте плашку: ключи VAPID и число подписчиков.
- Если у вас «Премиум» и используются персональные уведомления — нажмите «Снять все персональные привязки» (глава 6): откат базы автоматически обнаружить нельзя, а привязки должны совпадать с настоящими устройствами.
- Откройте «Диагностику».
Правила гигиены
- Не удаляйте папку
wa-data/public/pwa: в ней файлы приложения всех витрин. Если удалили случайно — откройте настройки каждой витрины и нажмите «Сохранить» (или восстановите из копии). - Перед сменой темы сайта убедитесь, что в новой теме есть подключение PWA (хелперы или хуки
frontend_headиfrontend_footer) (глава 3). - Не включайте у других модулей собственные Service Worker на той же области: они вытесняют PWA (известный случай — опция «Enable caching Server worker» у SuperCache).