Обновление интранет сайта-приложения - теоритический вопрос

KorP

Новичок
Всем привет. Есть у меня интранет сайт-приложение и сейчас обновление его сводится к удалению всх файлов, кроме config.php в котором хранятся настройки подключения к БД и разлив из архива новой версии, а так же выполнение update.sql, если есть изменения в базе. Короче всё делается руками пользователей, что естественно не комильфо.
Решил я всё же что пора с этим что то делать и стал пытаться гуглить на тему - как же написать апдейтер (к сожалению слова update вместе php приводят совсем не к тому результату). И тут я в тупике немного. Задачу разделил на 2 части:
1. Обновление файлов:
а. Можно хранить в xml список обновлённых файлов, из вынимать из архива с новой версией и заменять старые
б. Заменять все файлы, файлами из архива

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

2. Обновление БД
Вот тут у меня самый большой затык. Снести все таблицы естественно нельзя (ну или придумывать костыли с временным бекапом данных, хотя то же ещё тот гемор имхо). Если обновлять, аналогично тому, как это реализовано сейчас - выполняя изменения из update.sql (но только тут уже в автоматическом режиме) возникает та же проблема что и сейчас - если человек обновляется не с последней версии - структура базы всё-равно будет не верной.

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

флоппик

promotor fidei
Команда форума
Партнер клуба
1. пусть с гита апдейтятся, не? Сразу решает десяток проблем и с разными версиями, и с заменой файлов. Деплойные ключики ридонли - и вперед?
2. Миграции, да.
 
Сверху