Ne v kontakte Asocial programmer's blog

Используем SVN в управлении сайтом. Часть первая: теоретические соображения.

В принципе, эта идея не нова, но почему-то мало применяется веб-мастерами. С другой стороны, использование SVN при управлении сайтом дает массу преимуществ.

Для тех, кто еще ни разу не сталкивался с этим чудесным инструментом, кратко раскажу что такое SVN и для чего он нужен. SVN отностися к семейству систем управления версиями, то бишь таких программ, ктотрые позволяют при разработке больших проектов отслеживать все изменения кода, создавать разные ветки развития программы, давать возможность нескольким разработчикам работать над одной и той же программой одновременно не мешая друг другу и еще множество всяких вещей.

Какие же применения этому инструменту могут найти веб-мастера? Да самые разные.

Первое: поддержка большого количества сайтов на одном движке.

Допустим, вы - крупный веб-мастер и на вашем обслуживании находятся с полтора десятков сайтов ваших клиентов. Чтобы не морочиться всякий раз, вы перевели всех своих клиентов на один и тот же движок (фирменная CMS, например ;) ) и теперь вам необходимо регулярно обновлять сайты клиентов. Фиксятся баги в движке, выпускаются патчи и каждый нужно установить на пятнадцать сайтов. Вееленькое занятие, что и говорить. Решение проблемы с помощью SVN напрашивается само собой: создается репозиторий, записываются в него файлы движка, создаются копии репозитория на сайтах клиентов и одна локальная копия на вашем компьютере. Теперь вы можете один раз внести изменения обновления в вашу локальную копию, записать из в репозиторий и с помощью нехитрой команды ‘svn update’, выполненной на серверах клиента, легко реплицировать их на все 15 сайтов, избежав ручного труда.

Этот же принцип можно использовать и для одного сайта для легкой синхронизации локальной копии, на которой вы производите отладку модулей, исправления движка и тд и рабочей копией на хостинге.

Второе: защита от взломов, легкий откат и резервное копирование.

Поместив файлы вашего сайта на хостинге под контроль версий, вы в случае взлома легко сможете обнаружить все имеющиеся левые файлы и изменения файлов движка, содержащие бекдоры. Для этот достаточно выполнить команду svn status и посмотреть список добавившихся/измененных файлов. Команда ‘svn diff [FILE]’ покажет вам изменения, сделанные в том или ином файле или, если не указывать [FILE] для всех файлов вцелом. Все бекдоры при этом, естественно, будут засвечены B)

Если злыдни-хакеры поудаляли кучу важных файлов, то можно легко откатить их бесчинства командой ‘svn revert’ (это если не были удалены целые дериктории) или ‘svn switch’ (для более тяжелых случаев). Самым железобетонным способом, пригодным даже в случае, когда удалены вообще все файлы, может послужить полное удаление остатков мусора и ‘svn checkout REPOSITORY_URL’

И, наконец, чтобы не сильно страдать при откатах из SVN, можно организовать автоматическое резервное копирование помещенного под SVN сайта при помощи команды ‘svn checkin’. Путем написания несложного скрипта, можно так же организовать и автоматическое резервное копирование базы данных. Прелесть таких бекапов по сравнению с обычными в том, что вы можете в любой момент извлечь бекап любой давности.

Во второй части я расскажу о некоторых способах практической реализации мыслей, изложенных в данной статье :idea: