- Subversion Server for Windows
- The proper way to setup an Apache Subversion server
- Easy to install, configure and maintain
- Free for commercial use!
- Установка Subversion (SVN) на Windows
- Устанавливаем svnserve вручную под Windows на основе SlikSVN
- Шаг 1. Установка сервера
- Шаг 2. Установка клиента
- Шаг 3. Установка службы svnserve
- Шаг 4. Настройка svnserve
- Установка и настройка SVN-сервера под Windows
- Введение
- Шаг 1. Установка сервера.
- Шаг 2. Установка клиента.
- Шаг 3. Настройка svnserve.
- Шаг 4. Настройка Apache.
- 59 комментариев к записи
Subversion Server for Windows
VisualSVN Server allows you to easily install and manage a fully-functional Subversion server on the Windows platform. Thanks to its robustness, unbeatable usability and unique enterprise-grade features, VisualSVN Server is useful both for small business and corporate users.
The key features of VisualSVN Server are:
The proper way to setup an Apache Subversion server
VisualSVN Server has reached more than 3,000,000 downloads and it’s the most favored way to setup and maintain an Apache Subversion server on the Windows platform. It is certified for Windows Server and trusted both by thousands of SMBs and Fortune 500 companies such as General Electric, Siemens, ThyssenKrupp and Sony. Learn more.
Easy to install, configure and maintain
VisualSVN Server is distributed as a single installation package with the latest versions of all the required components. The installation process is extremely simple and allows you to setup a full-featured and ready to use Subversion server in just a few clicks. Upgrades to newer versions are simple too. Learn more.
Free for commercial use!
VisualSVN Server is freely available for commercial use under the Community license. The free Community license does not require any registration, allows an unlimited number of repositories and up to 15 users. Learn about other available license types.
Установка Subversion (SVN) на Windows
Автор: Max Bond
Дата записи
Subversion (SVN) — свободная централизованная система управления версиями. Необходимый инструмент программиста.
Подготовка к установке
- Предварительно необходимо установить Apache (отдельно или в составе Zend Server ).
- Скачать последнюю версию Subversion для Windows: http://sourceforge.net/projects/win32svn/files/latest/ (на момент написания статьи – версия 1.7.6)
Установка
- Запускаем установщик. Здесь все очень просто и прямолинейно. Единственное значимое действие – выбор пути установки. В моем случае это c:\Program Files (x86)\Subversion\.
- Добавляем папку c:\Program Files (x86)\Subversion\bin в SYSTEM PATH.
Открываем Пуск -> Компьютер -> Свойства -> Дополнительные параметры системы ->вкладка Дополнительно -> Кнопка Переменные среды.
В разделе “Системные переменные” находим переменную Path и нажимаем кнопку Изменить. В конец строки дописываем путь к папке bin. Разделитель путей – точка с запятой “;”.
Кстати, установщик справился с этим заданием сам, так что мне осталось только проконтролировать 🙂 - Из папки c:\Program Files (x86)\Subversion\bin копируем файлы mod_dav_svn.so и mod_authz_svn.so в папку c:\Program Files (x86)\Zend\Apache2\modules, здесьc:\Program Files (x86)\Zend\Apache2 – папка установки Apache.
- Далее переходим в папку c:\Program Files (x86)\Zend\Apache2\conf и открываем файл httpd.conf. Находим в нем строки:
и активируем их, т.е. убираем решетку (#) в начале обоих строк.
Там же добавляем две новые строки:
В SVNPath указывается путь к папке репозитория.
Для этого открываем браузер и вводим в адресную строку: http://localhost/svn/
Если все правильно, вы должны увидеть надпись:
svn – Revision 0: /
Выбор структуры.
На этом этапе вы должны решить какой будет структура вашего репозитория. Будет ли в нем хранится несколько проектов или только один. У обоих подходов есть свои плюсы и минусы (подробнее здесь (анг.)). Многопроектный репозиторий легче администрировать, и при этом вы всегда сможете создать отдельный репозиторий для какого-нибудь большого проекта. Лично я предпочитаю хранить проекты в одном репозитории, белее-менее крупная софтверная компания выберет, скорее всего, смешанный вариант.
Чем отличается многопректный вариант от однопроектного? Только структурой папок.
Структура многопроектного репозитория:
Структура однопроектного репозитория:
Подробнее о назначении системных папок:
- trunk – папка для хранения кода текущего релиза (последняя стабильная версия проекта). Не должна содержать ничего лишнего!
- tags – папка для хранения версий. Содержит подпапки по номерам версий. Выкладывая новый релиз в trunk всегда делаем копию в tags!
- branches – папка для работы над новым или экспериментальным кодом (чтобы не затронуть код текущего релиза).
Создаем проект
Вновь открываем командную строку, и выполняем:
Создаем системные папки:
Проверяем результат из командной строки:
Или открываем в браузере http://localhost/svn/project1
В обоих случаях вы должны увидеть созданную структуру папок.
Настройка прав доступа
- Первый шаг – создание пользователей.
Открываем командную строку, переходим в папку установки Apache и далее в папку bin:
В зависимости от типа аутентификации используются разные команды (для Simple – htpasswd, для Digest – htdigest).
Создаем первого пользователя:
Параметр -с используется для создания файла e:\_SVN\auth.
Следующих пользователей создаем без параметра -с (иначе файл будет перезаписан и мы потеряем всю введенную ранее информацию):
e:\_SVN\auth – это путь к файлу, в котором будет храниться информация о пользователях. Расположение файла может быть любым, но чтобы не запутаться размещаю его в папку репозитория.
SVN – область (realm) или группа к которой принадлежит имя пользователя. Значение этого параметра запоминаем, т.к. оно еще понадобится.
Max – имя пользователя.
После ввода команды, необходимо ввести пароль пользователя, затем повторно подтвердить его.
В отличие от htpasswd, htdigest не может удалять пользователя. Поэтому единственный выход – ручное редактирование файла.
В папке репозитория (e:\_SVN) создаем еще один файл – acl с примерно таким содержанием (используем Блокнот):
Вносим изменения в svn.conf:
Обратите внимание на параметр AuthName, его значение должно совпадать с параметром realm, введенном при создании пользователя.
Работать с Subversion из командной строки – страшный анахронизм. В следующей статье я покажу как установить и использовать клиент Subversion в популярной среде разработки Eclipse.
Устанавливаем svnserve вручную под Windows на основе SlikSVN
У нас в сайте уже имеется статья о настройке сервера Subversion под Windows на основе продукции CollabNet, однако они прекратили поддержку этого замечательного продукта и теперь предлагают убогий аналог (Subversion Edge), написанный на Java, работающий нестабильно и часто вызывающий различные сбои, поэтому в данном HOWTO мы подробно рассмотрим установку простого и быстрого svn-сервера под Windows на основе SlikSVN.
SlikSVN содержит в комплекте только svnserve, поэтому если Вам нужен Apache, придётся использовать CollabNet Subversion Edge, либо собирать комплект вручную.
Шаг 1. Установка сервера
Установка достаточно проста и не должна вызвать затруднений. Просто загрузите версию для своей платформы с официального сайта и установите штатными средствами. Запомните путь, в который установили сервер, он нам понадобится в дальнейшем.
Сразу после установки Вы должны прописать каталог сервера в системную переменную %PATH%, иначе возможны проблемы при запуске и работе сервера. Для этого перейдите в Панель управления — Система (либо нажмите правой кнопкой по значку Мой компьютер и выберите пункт Свойства) — страница Дополнительно — кнопка Переменные среды. В открывшемся окне в системных переменных найдите Path, выделите её и нажмите Изменить, поставьте точку с запятой и укажите путь к установленному серверу.
Например в строке было прописано:
После Ваших правок должно получиться так:
Здесь C:\Program Files\SlikSvn\ — путь к установленному SlikSVN.
Внимание! После последнего пути точка с запятой не ставится.
Шаг 2. Установка клиента
В качестве SVN-клиента мы будем использовать TortoiseSVN, подробнее о котором можно почитать в HOWTO.
Скачать программу можно на её официальном сайте программы на странице Downloads: http://tortoisesvn.net/downloads. Там же можно скачать пакет локализации, содержащий помимо перевода интерфейса программы, ещё и словарь проверки орфографии (применяется при коммите изменений).
Установка программы стандартна и не должна вызвать никаких сложностей.
Шаг 3. Установка службы svnserve
SlikSVN по умолчанию не устанавливает сервер svnserve как системную службу Windows, поэтому придётся выполнить это действие вручную.
Рекомендуем создать в любой папке cmd-файл для быстрой установки.
Если у Вас Windows XP, используйте следующий файл:
Здесь первая команда создаёт службу Windows, а вторая задаёт ей описание. Созданный cmd-файл нужно запускать с правами администратора.
Если у Вас Windows Vista/7, то используйте такой файл:
Отличие лишь в добавленном параметре —listen-host 0.0.0.0, при отсутствии которого на Windows Vista/7 сервер слушает только IPv6, а не IPv4.
В обоих скриптах C:\Program Files\SlikSvn\ — путь установки сервера, а c:\svn_repository — путь, в котором будут храниться репозитории сервером. Все пути с пробелами должны быть указаны в кавычках, а кавычки экранированы.
Если в ответ на обе команды Вы получили Success, значит служба сервера была успешно создана, настроена и включена для автоматического запуска.
Шаг 4. Настройка svnserve
Настройку начнём с того, что создадим новый репозиторий со стандартными настройками, которые и будем редактировать. Для этого зайдём в Проводнике Windows в каталог, который Вы указали в скрипте установки службы для хранилища репозиториев (стандартное значение — С:\svn_repository), нажмём правой кнопкой по пустому месту в нём (если каталог ещё не существует, его нужно создать) и выберем «TortoiseSVN» — «Create repository here«. Через несколько мгновений внутри каталога появятся файлы и подкаталоги, а также будет выведено сообщение об успешном создании репозитория. В дальнейшем путь к репозиторию я буду заменять на ПУТЬ_К_РЕПОЗИТОРИЮ.
Теперь мы должны создать пользователей, которые будут работать с репозиторием. Для этого мы должны открыть файл «ПУТЬ_К_РЕПОЗИТОРИЮ\conf\svnserve.conf» в любом текстовом редакторе, например Блокноте Windows или Notepad++. Здесь Вы должны раскомментировать (убрать перед строкой символ(ы) «#«) следующие строки:
Строка «anon-access = none» означает, что анонимы не смогут получить доступ к репозиторию вообще (сделано из соображений безопасности), а «auth-access = write» означает, что авторизованные пользователи получат полный доступ в пределах их ограничений, заданных в файле authz (если такая функция включена). Если Вы хотите, чтобы анонимы могли получить доступ только для чтения (например, разрабатываете OpenSource-проект), то установите «anon-access = read«.
Теперь Вы должны раскомментировать строку:
Эта строка указывает в каком файле будут находиться логины и пароли пользователей для авторизации на svn-сервере. Теперь откройте файл «ПУТЬ_К_РЕПОЗИТОРИЮ\conf\passwd» в любом текстовом редакторе и впишите в нём «логин_пользователя = пароль_пользователя» (разделителем служит знак равенства). Пример правильного файла passwd:
Убираем символ комментария из строки:
В ней указывается имя Вашего репозитория. После знака равенства вместо My First Repository Вы можете указать любое другое имя. Оно выводится при запросе логина и пароля.
Настройка сервера с простой (simple) авторизацией завершена. Пример правильного файла конфигурации сервера:
Установка и настройка SVN-сервера под Windows
Введение
В данном HOWTO я подробно опишу как установить и настроить SVN (subversion) сервер под ОС Windows.
Статья о настройке прав доступа SVN-сервера доступна здесь.
Внимание! CollabNet прекратили поддержку описанного в данной статье Subversion Server and Client и предлагают вместо него другой проект — Subversion Edge, который в несколько раз хуже и часто работает нестабильно. Если Вам нужен только svnserve (без Apache), перейдите на использование простого и быстрого SlikSVN (во время установки установите все компоненты и особенно svnserve). Установка и настройка данного проекта описана в другой статье нашего сайта.
Шаг 1. Установка сервера.
Итак, для начала нам будет нужен сам дистрибутив с svn-сервером, который можно бесплатно скачать с официального сайта CollabNet (перед тем как что-то скачать, Вы должны пройти бесплатную регистрацию на этом сайте (зачем так сделано не очень понятно)). Вы должны скачать CollabNet Subversion Server and Client v1.6.9 (for Windows) (версия 1.6.9 — последняя на момент написания данного HOWTO).
После скачивания файла CollabNetSubversion-server-1.6.9-1.win32.exe (18,44 МБ), запускайте его и следуйте указаниям мастера. Мастер выполнит несколько шагов. Рассмотрим все шаги мастера по порядку:
- Приветствие мастера. Сразу жмите «Next«.
- Предложение прочитать онлайновый ReadMe. Жмите «Next«.
- Выберите компоненты, которые нужно установить: svnserve (собственно svn-сервер (устанавливать обязательно)) и Apache (устанавливайте только если хотите разрешить доступ к своим репозиториям из Интернета через обычные браузеры). Выбрав нужные компоненты, переходите к следующему шагу.
- На этом шаге предлагается выбрать порт для svn-сервера (настоятельно рекомендуется использовать стандартный 3690) и указать путь, где будут храниться репозитории (рекомендуется стандартное значение c:\svn_repository). Флажок в строке «Install svnserve to run as Windows service» позволит автоматически запускаться svn-серверу при запуске Windows (рекомендуется не снимать отсюда флажок). Внимание! Этого шага не будет, если на шаге 3 Вы не выбрали компонент svnserve.
- Теперь предлагается настроить Apache если Вы его выбрали на третьем шаге мастера установки.
- Host/Server name — имя сервера. Рекомендуется оставить localhost.
- Host Port — порт, на котором будет находиться Apache. Рекомендуется либо стандартный 80, либо 8080.
- Install Apache to run as Windows service — позволяет Apache запускаться вместе с Windows.
- Repository Path — путь к svn-репозиторию. Укажите то же значение, что Вы указывали на шаге 4. Рекомендуется стандартное значение C:\svn_repository.
- Repository Location Prefix — префикс, по которому будет доступен svn-репозиторий. Пример: http://localhost:80/svn/. Если Вы будете использовать установленный Apache только для репозиториев svn, установите в этом поле лишь слэш «/«, в противном случае оставьте стандартное значение /svn.
- Выберите каталог для установки набора серверов и нажмите «Install«.
- На этом шаге предлагается включить уведомления о новых версиях программы. Рекомендуется снять все флажки.
- Нажмите «Finish«. Установка завершена.
Шаг 2. Установка клиента.
В качестве SVN-клиента мы будем использовать TortoiseSVN, подробнее о котором можно почитать в HOWTO.
Скачать программу можно на её официальном сайте программы на странице Downloads: http://tortoisesvn.net/downloads. Там же можно скачать пакет локализации, содержащий помимо перевода интерфейса программы, ещё и словарь проверки орфографии (применяется при коммите изменений).
Установка программы стандартна и не должна вызвать никаких сложностей.
Шаг 3. Настройка svnserve.
Настройку начнём с того, что создадим новый репозиторий со стандартными настройками, которые и будем редактировать. Для этого зайдём в Проводнике Windows в каталог, указанный в качестве «Repository path» во время установки сервера (стандартное значение — С:\svn_repository\), нажмём правой кнопкой по пустому месту в нём и выберем «TortoiseSVN» — «Create repository here«. Через несколько мгновений внутри каталога появятся файлы и подкаталоги, а также будет выведено сообщение об успешном создании репозитория. В дальнейшем путь к репозиторию я буду заменять на ПУТЬ_К_РЕПОЗИТАРИЮ.
Теперь мы должны создать пользователей, которые будут работать с репозиторием. Для этого мы должны открыть файл «ПУТЬ_К_РЕПОЗИТАРИЮ\conf\svnserve.conf» в любом текстовом редакторе, например Блокноте Windows или Notepad++. Здесь Вы должны раскомментировать (убрать перед строкой символ(ы) «#«) следующие строки:
Строка «anon-access = none» означает, что анонимы не смогут получить доступ к репозиторию вообще (сделано из соображений безопасности), а «auth-access = write» означает, что авторизованные пользователи получат полный доступ в пределах их ограничений, заданных в файле authz (если такая функция включена). Если Вы хотите, чтобы анонимы могли получить доступ только для чтения (например, разрабатываете OpenSource-проект), то установите «anon-access = read«.
Теперь Вы должны раскомментировать строку:
Эта строка указывает в каком файле будут находиться логины и пароли пользователей для авторизации на svn-сервере. Теперь откройте файл «ПУТЬ_К_РЕПОЗИТАРИЮ\conf\passwd» в любом текстовом редакторе и впишите в нём «логин_пользователя = пароль_пользователя» (разделителем служит знак равенства). Пример правильного файла passwd:
Убираем символ комментария из строки:
В ней указывается имя Вашего репозитория. После знака равенства вместо My First Repository Вы можете указать любое другое имя. Оно выводится при запросе логина и пароля.
Настройка сервера с простой (simple) авторизацией завершена. Пример правильного файла конфигурации сервера:
Теперь пора проверить созданный нами svn-сервер, но сначала мы должны перезапустить его чтобы он смог считать изменённые конфигурационные файлы. Для этого набираем «Windows+R» — «cmd.exe«. В открывшейся командной строке пишем слелующие команды (по порядку):
Открываем TortoiseSVN Repository Browser из контекстного меню любой папки и в качестве URL вводим: svn://127.0.0.1/. Сервер запросит указать логин и пароль, заданные в файле passwd и при успешной авторизации отобразит корневой каталог. Сервер успешно настроен и готов к управлению проектами.
Шаг 4. Настройка Apache.
Если Вы хотите, чтобы к Вашему репозиторию был доступ не только с помощью svn-клиентов, но и с помощью любого веб-браузера, то должны сделать ряд настроек.
Откройте в любом текстовом редакторе файл «%PROGRAMFILES%\CollabNet\Subversion Server\httpd\conf\httpd.conf«, где «%PROGRAMFILES%\CollabNet\Subversion Server\» — это путь установки svn-серверов. В конце файла httpd.conf найдите следующие строки:
и замените на такие:
Здесь с:\svn_repository — путь к репозиторию svn. Измените в соответствии с Вашими настройками.
Теперь нужно создать файл паролей Apache. Для этого откройте командную строку Windows («Win+R» — «cmd.exe«) и выполните следующие команды:
Внимание! Параметр -cm нужно указывать только при первом создании пользователя, т.к. он перезаписывает имеющийся файл. В пути к файлу паролей буква диска обязательно должна быть в верхнем регистре.
В качестве ЛОГИН_ПОЛЬЗОВАТЕЛЯ нужно указать все логины пользователей, указанные в файле passwd. Пароли также должны быть идентичны.
Настройка SVN over Apache 2 была успешно завершена. Теперь нужно перезапустить сервер командами консоли Windows:
Протестировать сервер можно так: http://127.0.0.1:ПОРТ/ в любом веб-браузере. Будет запрошен логин и пароль для доступа к репозиторию.
59 комментариев к записи
@Алекс88
Штатно такой функции нет, но можно в файрволе создать разрешающие правила для входящих соединений на порт 3690 только для определённых IP-адресов, а все остальные подключения блокировать. На Linux используйте iptables.
Спасибо. Возник ещё один вопрос теперь уже с модулем для apache, в место Require valid-user установил Require user admin, но почему-то все остальные пользователи проекта тоже могут подключиться к нему не смотря на то что авторизация разрешена только для admin. Подскажите как разрешить авторизацию только для одного пользователя проектом а остальным запретить? А вообще хотелось бы сделать так, чтобы с одного ip заходили все пользователи, а с разных ip заходил только admin? Вот как я попытался это сделать но не получилось:
DAV svn
SVNParentPath /var/www/svn/
AuthType Basic
AuthzSVNAccessFile /etc/httpd/svn-acl.conf
AuthName «Authorization»
AuthUserFile /etc/httpd/svn-users.conf
Require user admin
Satisfy any
Order Allow,Deny
Allow from xxx.xxx.xxx.xxx
Спасибо. Возник ещё один вопрос теперь уже с модулем для apache, в место Require valid-user установил Require user admin
Поздравляю, вы изобрели новую директиву! В статье же написано как прописывать пользователей и задавать им пароли. Использовать нужно только require valid-user, что означает, что войти может только успешно авторизовавшийся пользователь.
Сами пользователи прописываются в файле, указанном в директиве AuthUserFile. Пример есть в статье:
@Vitaly
require valid-user вообще можно не указывать, всё-ровно будет работать. У меня вопрос в другом. Есть сотрудники, которым положено пользоваться svn только из офисного Ip, а с других ip доступ должен быть закрыт, также есть сотрудники для которых доступ к svn должен быть как из офисного ip, так и с любого другого ip. Такое возможно реализовать, если да то подскажите как?
@Vitaly
require valid-user вообще можно не указывать, всё-ровно будет работать.
Будет пускать любого без авторизации.
@Vitaly
Есть сотрудники, которым положено пользоваться svn только из офисного Ip, а с других ip доступ должен быть закрыт, также есть сотрудники для которых доступ к svn должен быть как из офисного ip, так и с любого другого ip. Такое возможно реализовать, если да то подскажите как?
Скорее всего, нет по крайней мере штатными средствами без написания собственных модулей для Apache. Можно лишь создать список IP-адресов, которым будет разрешён доступ, а всем остальным закрыть.
Это разрешит доступ из подсети 192.168.1.0/24, а также для локального хоста.
@Vitaly
Спасибо за помощь, в общем решил свою проблему так:
Для офисных сотрудников настроил доступ к репозиторию по протоколу svn://, в брандмауэре iptables настроил разрешающее правило на порт 3690 для офисного ip, по остальным ip доступ запрещён.
Для привилегированных сотрудников доступ к репозиторию настроен через apache http://.
Таким образом удалось добиться нужного результата. Надеюсь кому-нибудь это тоже будет полезно)
@Алекс88
Главное следите, чтобы оба сервиса (svnserve и apache) были запущены от одного пользователя в системе, либо принадлежали одной группе (например svnusers), иначе возникнут серьёзные проблемы и конфликты доступа.
Настроил всё, как написано, однако после запуска apache не могу получить доступ к репозиторию через браузер в соответствии с этой инструкцией:
Протестировать сервер можно так: http://127.0.0.1:ПОРТ/ в любом веб-браузере. Будет запрошен логин и пароль для доступа к репозиторию.
При подключении к порту 127.0.0.1:8080 требует логин и пароль, после ввода и того и другого снова требует пароль. И так до бесконечности.
То, что сейчас выложено на сайте CollabNet, не имеет никакого отношения к описанному в статье, т.к. они давно прекратили поддержку того продукта.