06.04.2012

Установка SVN на продакшн-сервер

На одном из поддерживаемых нами проектов предстояло несколько существенных доработок. Надо проектом работали несколько человек, поэтому необходимость в системе контроля версий встала остро, однако отдельного бюджета на создание сервера разработки не было. Пришлось искать выход из ситуации. Сервер работал под системой CentOS. Поставить систему SVN на любой сервер обычно не является проблемой. SVN работает по следующей схеме: программисты выкачивают себе базу и исходный код проекта, устанавливают SVN клиент и работают синхронизируются с SVN сервером. Однако в нашем случае проект был очень большой, база тоже была очень большая и самое сложное - база постоянно менялась. В зависимосит от базы менялась и логика работы скриптов, поэтому делать копии базы было бессмысленно. Оставалось только работать с основной базой, а следовательно и на основном сервере - через FTP. Выход из ситуации был следующим: создать на сервере несколько копий основных скриптов для каждого участника проекта и настроить на одной машине SVN сервер и SVN клиенты. Каждый программист работает через FTP со своей версией скриптов, которые соединяются с одной базой, часть скриптов ядра проекта, являются общими, настроены как исключения для SVN и представлены в качестве символьных ссылкок. Каждый программист имеет свой поддомен на котором работают его скрипты. Затем каждый программист в нужный момент синхронизирует свою рабочую копию с сервером. В Linux-среде без визуальной оболочки сложным моментом является визуальное наглядное сравнение разных версий файлов и истории изменений. На помощь пришла система websvn ( www.websvn.info ), позволяющая просматривать изменения и историю версий в веб-интерфейсе. Осталось только настроить данную систему, что не просто. Необходимо сначала установить DAV ( http://webphp.ru/2008/09/05/установка-и-настройка-svn-в-centos/ ), отредактировать виртуальные хосты для веб-интерфейса системы - настроить Apache и nginx, проверить права на доступ к нужным файлам и настроить, прописать доступы к SVN в конфигах скриптов и настроить сам SVN сервер.