Как я могу обновить мою CMS? - PullRequest
9 голосов
/ 25 сентября 2011

Я создал CMS (используя PHP-среду Codeigniter), которую мы используем для всех наших клиентов. Я постоянно подправляю его, и становится трудно отслеживать, какие клиенты имеют какую версию. Мы действительно хотим, чтобы у всех всегда была последняя версия.

Я написал это таким образом, чтобы обновления и обновления обычно включали только загрузку новой версии через FTP и удаление старой - я просто не касаюсь каталогов /uploads или /themes (все определенное на сайт есть либо там, либо в базе данных). Все является модулем, и у каждого модуля есть свой номер версии (а также ядро ​​CMS), а также сценарий установки и удаления для каждой версии, но сначала я должен вручную загрузить файлы по FTP, а затем запустить скрипт установки модуля. с панели управления. Я написал и буду продолжать писать все лично, поэтому у меня есть полный контроль над кодом.

Что мне хотелось бы, так это уметь обновлять ядро ​​CMS и отдельные модули с панели управления самой CMS. Это «CMS для чайников», поэтому вопрос о том, чтобы попросить людей FTP или сделать что-то удаленное, не обсуждается. Я представляю что-то вроде сообщения, появляющегося при входе в систему, или в списке установленных модулей, например «Доступна новая версия».

Я уверен, что смогу разобраться с большинством технических деталей, как только у меня получится, но я не уверен, какое направление выбрать. Я могу придумать, как попытаться сделать это с помощью cURL (для аутентификации и извлечения исходных файлов из какого-либо места на нашем сервере) и функций собственной файловой системы PHP, таких как unlink(), file_put_contents() и т. Д., Для предварительной обработки фактических обновлений файлов или заполнения " старый «CMS» в каталоге резервного копирования и настройте новый, но даже когда я пишу этот пост - это звучит как рецепт катастрофы.

Я не использую git / github или что-то еще, но у меня такое чувство, что что-то подобное может помочь? Как я должен (или не должен) подходить к этому?

Ответы [ 4 ]

4 голосов
/ 25 сентября 2011

Существует множество способов сделать это, но наименее сложным является просто установить Git на своих клиентских серверах и настроить задание cron, которое время от времени запускает мастер происхождения git pull. Если ваше приложение использует миграцию, это должно быть чертовски легко.

Вы можете сделать это так, как будто вы полностью контролируете своих клиентов. Для чего-то вроде PyroCMS или PancakeApp это не работает, потому что у любого может быть это на любом сервере, и мы должны быть немного умнее. Мы просто скачиваем ZIP, который содержит все измененные файлы и список удаленных файлов, что означает, что файловая система обновляется красиво.

У нас есть список установок, которые мы можем пропинговать с помощью HTTP-запроса, чтобы система знала, что нужно выполнить загрузку, или щелчок может нажать «Обновить» при входе в систему.

1 голос
/ 11 октября 2011

@ Obsidian Разве атака отравления DNS также не скомпрометирует большинство методов, упомянутых в этой теме?

Кроме того, SSH может быть скомпрометирован и человеком в средней атаке.

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

SSH и Git звучат как хорошее решение, но какова целевая аудитория?

1 голос
/ 28 сентября 2011

Вы можете использовать Git с вашей CMS: Glip .Cron будет URL вашей собственной системы без установки Git.

0 голосов
/ 26 сентября 2011

Вы смотрели, как это делает WordPress?Казалось бы, делать то, что вы хотите.Проверьте эту страницу для описания того, как это работает.http://tech.ipstenu.org/2011/how-the-wordpress-upgrade-works/

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