@solomonych

Чем лучше обновлять версии cms?

Приветствую!


Предлагаю к рассмотрению такой мини it-кейс:


Сам я дизайнер сайтов, но в силу понятных обстоятельств приходится в 70% случаев после этого (дизайна) делать клиентам сайты «под ключ» («о, как круто, что мы нашли программиста»:).


Поскольку сайты не большие и подпадают под понятие «промо-»/корпоративные в лайт-комплектации (без сложных интеграций и т.п.) мною была заказана фрилансеру самописная цмс-ка с набором самых необходимых функций.


Сейчас у этой системы порядка 200-250 установок (за 3 года работы), с момента разработки по сути никаких глобальных доработок и итераций не делалось… В ней за это время разрозненно (в разных проектах) было исправлено и залаталось много дыр, багов, дописались новые модули-функции, обновился интерфейс админки. Сейчас, наконец, у меня есть этот код в одном месте.


Исходные данные:

1. есть пароли ко всем сайтам, где хотелось бы обновить код в виде логин: пароль@сервер.

2. есть последняя версия кода, которую хотелось бы всем разом обновить-выкатить (разветвленная система папок с вложенными в них скриптами). Логично предположить, что тупо снести-перезалить не прокатит, т.к. в тех же папках не нулевого уровня вложенности лежат шаблоны, кеши страниц, картинки и т.п.

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


Задача — простая как 2 рубля:

Обновить автоматом все и сразу до последней версии :)


Буду очень благодарен за любые идеи, линки, советы, что почитать, примеры готовых решений и софта!!!
  • Вопрос задан
  • 3151 просмотр
Пригласить эксперта
Ответы на вопрос 6
@egorinsk
А если клиент после установки сайта там что-то менял, например, вы своим обновлением снесете это или вообще сломаете сайт, вас это не пугает?
Ответ написан
@zapimir
По-моему об этом нужно задавать вопрос в первую очередь автору cms, или тому кто её доделывал, так как при доделывании не всегда может остаться обратная совместимость (если такая задача не ставилась). Плюс нужны диффы структуры базы и её тоже обновлять.
Ответ написан
Посмотрите на capistrano. По-моему именно то, что вам нужно. Что не на PHP (почему-то мне кажется, что ваша CMS на нём) — не пугайтесь, освоить синтаксис куда проще, чем синтаксис конфигов «нативного» Phing, предназначеного для тех же целей. Ruby придётся устанавливать только на локальной машине. Документация отличная, но на английском. Примеры использования, в том числе и с PHP проектами, есть и на Хабре.

По вопросу организации самого процесса — сложно советовать не зная особенностей движка и могут/должны ли быть на разных сайтах отличия в коде и других «как бы» сайтовонезависимых файлах и схемы БД. Если могут/должны, то посоветовал бы познакомиться с системами контроля версий (я лично предпочитаю Mercurial, но более популярен Git), впрочем познакомиться с ними стоит в любом случае. И организовать структуру репозиториев/веток примерно так: основная ветка/репозиторий — общий код (+дефолтный дизайн), ответвления от неё/клоны — код каждого из сайтов (туда же можно поместить сайтоспецифичные шаблоны, картинки и т. п.). При следующем обновлении общего кода по очереди мержите (объединяете) код веток/клонов с основным (пожалуй для вашего случая лучше клоны) — что-то автоматически объединится, где-то руками конфликты разрешить придётся и заливаете на сервера (по хорошему надо ещё и тестировать предварительно, но похоже не ваш случай).

Бюджет нулевой, но пару-тройку дней потратить придётся на изучение и организацию. Зато потом любая правка (в том исле изменение схемы данных) в основном репозитории будет распространяться на все сервера одной командой капистрано, оставляя в неприкосновенности их локальные нюансы. Поверьте — оно того стоит!
Ответ написан
@Chii
Я бы предложила завести открытый (или закрытый?) репозиторий с этой цмс и просто оповещать клиентов об обновлении. Кому надо — пусть сами обновляются.

Или если они оплатили сопровождение — почему-то мне кажется, что стоит дописать функционал самообновления, не так уж это и сложно. В большинстве свободных (и даже несвободных) цмс оно прекрасно реализовано и работает. Очень удачный вариант можно наблюдать в примере форумных скриптов phpbb. Туда ещё добавить автовыкачивание по расписанию патча и автораспаковку — вот и готовая самообновлялка.
Ответ написан
Комментировать
mastini
@mastini
про rsync не думали?
или сделать архив и просто при его распаковке заменить файлы?
скриптом удалить не нужные файлы, если таковые есть.
Ответ написан
Комментировать
Если у клиента все работает, и он всем доволен — то зачем ему что-то обновлять?
Тем более, если это отдельно не обговаривалось.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы