Подготовка к крупному обновлению

Как правило, обновления выполняются регулярно, через относительно небольшие промежутки времени (по крайней мере, мы рекомендуем обновлять SuiteCRM как можно чаще).

Но если система долго не обновлялась, да ещё в неё было внесено большое количество доработок, либо досталась вам "по наследству" без какой-либо разумной документации, то перспектива обновления может показаться достаточно мрачной.

Это руководство предназначено для системных администраторов и тех сотрудников, которые могут обеспечить сохранение существующей функциональности при обновлении системы. Также было бы полезно иметь опыт разработчика для успешного выполнения задачи.

Эта статья написана с целью упрощения перехода с SuiteCRM версии 7.8 на более новые, поскольку время поддержки указанной версии истекло. Хотя большинство описанных здесь манипуляций будут применимы и к ​​другим обновлениям, некоторые из описанных здесь деталей, будут специфичны только для указанной версии.

1. Планирование

1.1. Готова ли система к обновлению?

Подобно тому, как вы проводите ТО вашего автомобиля перед длительной поездкой, неплохо было бы убедиться, что ваша система готова к обновлению.

  • Проверьте базы данных на наличие таблиц с ненужными данными. Некоторые таблицы со временем имеют тенденцию к значительному увеличению объёма. Многие записи помечаются как удалённые (deleted=1) без реального удаления данных из таблиц. Вы можете проверить в планировщике правила очистки таблиц и удалить все лишние данные.

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

1.2. Определение круга задач

При обновлении одного из компонентов архитектуры, часто требуется обновление и других, зависимых компонентов. Выделите время и подумайте о масштабах и целях проводимого обновления в долгосрочной перспективе.

  • Выберите целевую версию SuiteCRM: перейдёте ли вы на версию 7.10 LTS (с долгосрочной поддержкой) или на самую новую - 7.11?

  • Проверьте таблицу совместимости и проверьте, нуждается ли стек ПО (веб-сервер, база данных, PHP) в обновлении. Скорее всего, оно потребуется.

  • В частности, убедитесь, что установленная версия PHP будет поддерживаться достаточное время, от этого, в том числе зависит безопасность вашей системы.

Вероятно, стоит воспользоваться возможностью обновления для улучшения вашего аппаратного обеспечения/архитектуры/процессов, в том числе:

  • перейти на новый, более мощный сервер

  • физически разделить базу данных и веб-сервер

  • перейти к установке на основе виртуальной машины

  • перейти к установке на основе контейнеров

  • использовать git при работе с репозиторием для лучшего управления изменениями кода

  • переосмыслить ваши стратегии отказоустойчивости/резервного копирования

  • перейти на использование облачного сервиса

  • воспользоваться облачными услугами команды разработчиков SuiteCRM

1.3. Проведение аудита настроек системы

Ваша цель - обновить систему, не нарушая существующих настроек и функционала, к которому привыкли ваши пользователи. Иногда внесённые изменения в систему существуют так долго, что никто не помнит, что эти изменения не являются частью основного продукта, кто сделал эти настройки, и каким образом …​ поэтому прежде всего вам необходимо быть в курсе всех изменённых компонентов системы.

Изменения могут включать в себя такие элементы как:

  • дополнения (add-ons)

  • визуальные изменения, изменение логотипа и темы

  • макеты форм с изменёнными полями

  • логические хуки и настроенные Процессы

  • кастомизация кода и т.д.

Большая часть из вышеперечисленного будет сохранена после обновления (но скорее всего не всё), поэтому каждый из этих компонентов после обновления необходимо отдельно проверить на работоспособность.

Перед обновлением соберите максимально подробную информацию об особенностях используемой версии SuiteCRM, в частности уточните следующие моменты:

  • Потребуется ли обновлять какие-либо дополнения, совместимы ли эти дополнения с новой версией SuiteCRM?

  • Были ли внесены в систему какие-либо пользовательские изменения, сделанные небезопасным для обновления способом, путём редактирования файлов системы напрямую, вместо использования специального алгоритма кастомизации. Если это так, то все изменённые файлы необходимо переместить в соответствующие подпапки папки custom, в противном случае все изменённые файлы будут перезаписаны файлами обновлённой версии.

  • Любые специфичные для темы SuiteR настройки должны быть переделаны для темы SuiteP (начиная с версии 7.9 поддерживается только тема SuiteP).

1.4. Согласование всех вопросов внутри организации

Обновление CRM - это процесс, который, вероятно, повлияет на повседневные процессы большинства людей в вашей организации. Неплохо было бы убедиться, что все участники, в частности:

  • технический персонал

  • менеджеры

  • пользователи

  • клиенты, поставщики, партнёры (если вы ожидаете, что проведённые изменения по какой-то причине затронут и их интересы)

предупреждены, вовлечены в процесс и мотивированы.

1.5. Заключительные шаги перед обновлением

  • Создайте отдельный проект обновления

  • Определите риски

  • Определите сроки

  • Определите критические моменты в процессе выполнения проекта

  • Назначьте ответственного в каждой команде

  • Включите обширное тестирование и, возможно, поэтапный план внедрения

  • Сведите к минимуму время простоя, уделяя особое внимание последнему моменту обновления, когда старый сервер удалён, а новый запущен.

2. Выполнение обновления

2.1. Стратегия обновления и использование второго сервера

Вам понадобится второй сервер в процессе обновления, чтобы он мог выступать в качестве сервера для пользовательского тестирования (т.н. UAT, User Acceptance Testing). Есть разные способы подойти к тестированию, мы могли бы назвать их Стратегия "Переход на обновление" (Migrate-to-Upgrade Strategy) и Стратегия "Тестирование и обновление" (Test-and-Upgrade Strategy):

Диаграмма стратегий обновления

Большим преимуществом на данный момент является использование технологий Виртуализации или Контейнеризации, которые дают возможность опробовать новую конфигурацию и при необходимости выполнить откат к предыдущим снимкам.

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

2.2. Перенос базы данных

Перемещение базы данных на новый сервер может быть достаточно простым, если вы получите полный дамп всей структуры и данных, и затем загрузите полученный дамп на новый сервер. Но такой подход не всегда допустим.

Никогда не пытайтесь переместить базу данных определённой версии SuiteCRM на сервер, который использует другую версию SuiteCRM, поскольку структуры базы данных в различных системах могут значительно отличаться. Могут возникнуть серьёзные проблемы с целостностью данных. Возможно, некоторые проблемы станут очевидными гораздо позднее, когда уже поздно, либо достаточно проблематично что-либо исправить …​

Если вам нужен более сложный процесс переноса данных, рассмотрите возможность использования технологий ETL или инструмента SQL Workbench.

2.3. Перенос файлов

Если вам необходима точная копия системы, переместите весь каталог SuiteCRM, за исключением каталога cache.

Если вы просто хотите перенести существующие данные и настройки, переместите соответствующее содержимое папок uploads (содержит фотографии, вложения и документы) и custom на новый сервер.

2.4. Тестирование и проверка нового сервера

Обратите внимание на следующие компоненты:

  • Пользовательские настройки

  • Настройки электронной почты

  • Настройки темы

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

Изучите новый функционал, если вы планируете его использование, в частности Google Calendar Sync и Elastic Search.

2.5. Изменение доменного имени сервера

Если ваше обновление связано с переходом на сервер с другим доменным именем, пожалуйста, проверьте:

  • Любые ссылки на ваших сайтах, указывающие на новый сервер

  • Обновите файл SuiteCRM config.php, записи` site_url` и host_name

  • Обновите URL-адреса в настроенных Процессах

  • Проверьте соответствующие части конфигурации веб-сервера (например, файлы .htaccess)

3. Последние штрихи после обновления

Как только новая система заработает, подумайте об извлечённых уроках и сосредоточьтесь на будущих целях.

Стремитесь поддерживать работоспособность и актуальность установленной системы, поскольку постоянно продолжаются исправления безопасности и обнаруженных ошибок, и этот процесс не следует считать полностью завершённым, как обычно и происходит с любым крупным программным проектом.

Пожалуйста, сообщайте на форуме о любых обнаруженных проблемах. Если вы обнаружили ошибку в программном обеспечении, и вы не нашли её описания на форуме, пожалуйста, заведите соответствующий тикет в нашем Github-репозитории.

By likhobory | October 6, 2019

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.