Всегда и во всем я руководствуюсь простым правилом: — Неважно какой движок, сайт, сервис или версию я обновляю, важно наличие полной резервной копии. Даже если создание резервной копии в несколько раз по времени превышает накат обновления или мелкой правки (случаи с другими движками, системами).
Итак, если обновляю боевой сайт с изменением версии ядра:
1. Делаю самый актуальный дамп базы и выгружаю на локальный сервак;
2. На локальном серваке поднимаю копию сайта, но с чистым движком. Это проще, если все файлы, не относящиеся к движку, содержатся в сборке проекта.
3. Если сборки проекта нет, создаю ее, наполняю всеми необходимыми файлами, шаблонами и т.п. и фиксирую ее в приватном репозитории. (https://gitlab.com/, https://bitbucket.org/ and etc.).
4. На локальном сайте обязательно включаю режим разработчика в config.php и открываю главную страницу сайта. В этот момент платформа определяет наличие изменений версий и накатывает обновления в базы данных.
5. Тестирую локальную версию сайта. Кстати, в версии платформы 0.6.0 разработал механизм покрытия ядра и модулей тестами. Так что, в скором будущем с выходом версии 0.6.0 кол-во багов будет на порядок меньше.
6. На боевом сервере останавливаю сайт и в его настройках (config.php) включаю режим ReadOnly.
7. Очередной раз делаю актуальную копию дампа базы данных и так же делаю полную копию текущих файлов сайта.
8. Заливаю новую версию платформы на боевой сервер, отключаю режим ReadOnly и открываю главную страницу сайта. Сайт обновлен.
Если обновление не содержит изменение версии ядра, то все практически тоже самое, за исключением создания полной копии файлов сайта — просто заливаю платформу с заменой.
Вроде ничего не забыл...
Если что не понятно, спрашивайте.
Да, кстати, этот процесс у меня практически полностью автоматизирован всевозможными скриптами. Так что, если возникнет необходимость в них, скажите, скину их куда нибудь в репозиторий.