Что имею?
Постоянно редактируемый мною малоизвестный движок для интернет-магазинов.
В общих чертах о нем:
PHP, Smarty шаблонизатор, Mysqli DB
Что хочу сделать?
Обновление движка в два клика. Что-то подобное как на джумле. Заходишь в админку, проверяется актуальная версия CMS, если найдена новая, обновляется по клику.
Как я думаю можно сделать?
-Проверяется версия.
-Если есть новая, выводим сообщение с кнопкой.
-Сделать backup сайта, мало ли пойду какие либо косяки. Причем backup файлов и естественно дамп БД. В дальнейшем через Админ панель можно будет восстановить.
-Отключить сайт. Обрабатывается через index.php, проверяя параметр в БД.
-Через AJAX сделать закачку удаленного ZIP архива в temp папку в корне сайта и распаковать его туда.
В каждом пакете обновлений, наверное должно быть:
*Файл с перечнем обновлений новой версии.
*Список файлов которые существуют в пакете обновлений 3х видов.
***Добавить новый файл.
***Перезаписать существующий файл, файлов в пакете обновлений.
***Удалить файл.
-Внести новые таблицы/колонки в БД
-Соответственно пробежаться по "списку файлов", и сделать соответствующие действия. После чего нужно сделать проверку на успешность выполнения операции. Чтобы отображать всю инфу в логах.
-Если обновление поставлено без ошибок, включить сайт, иначе вывести предупреждение, что обновления легли некорректно, ну и показать логи, что именно не так. Возможно, нет прав на перезапись каких-либо файлов или еще чего-нибудь.
-Запустить сайт.
Как вы думаете, насколько данное решение адекватно?
Если у вас есть предложения либо корректировки, с радостью жду их в комментариях к вопросу.
Так и что, получилось в итоге сделать-то ? Вот сейчас тоже думаю выпустить продукт, и надо сделать систему обновления чтобы каждый раз вручную не обновлять...