Главная > HOWTO > Установка и настройка SVN-сервера под Windows

Установка и настройка 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 МБ), запускайте его и следуйте указаниям мастера. Мастер выполнит несколько шагов. Рассмотрим все шаги мастера по порядку:

  1. Приветствие мастера. Сразу жмите «Next«.
  2. Предложение прочитать онлайновый ReadMe. Жмите «Next«.
  3. Выберите компоненты, которые нужно установить: svnserve (собственно svn-сервер (устанавливать обязательно)) и Apache (устанавливайте только если хотите разрешить доступ к своим репозиториям из Интернета через обычные браузеры). Выбрав нужные компоненты, переходите к следующему шагу.
  4. На этом шаге предлагается выбрать порт для svn-сервера (настоятельно рекомендуется использовать стандартный 3690) и указать путь, где будут храниться репозитории (рекомендуется стандартное значение c:\svn_repository). Флажок в строке «Install svnserve to run as Windows service» позволит автоматически запускаться svn-серверу при запуске Windows (рекомендуется не снимать отсюда флажок). Внимание! Этого шага не будет, если на шаге 3 Вы не выбрали компонент svnserve.
  5. Теперь предлагается настроить 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.
  6. Выберите каталог для установки набора серверов и нажмите «Install«.
  7. На этом шаге предлагается включить уведомления о новых версиях программы. Рекомендуется снять все флажки.
  8. Нажмите «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

Строка «anon-access = none» означает, что анонимы не смогут получить доступ к репозиторию вообще (сделано из соображений безопасности), а «auth-access = write» означает, что авторизованные пользователи получат полный доступ в пределах их ограничений, заданных в файле authz (если такая функция включена). Если Вы хотите, чтобы анонимы могли получить доступ только для чтения (например, разрабатываете OpenSource-проект), то установите «anon-access = read«.

Теперь Вы должны раскомментировать строку:

password-db = passwd

Эта строка указывает в каком файле будут находиться логины и пароли пользователей для авторизации на svn-сервере. Теперь откройте файл «ПУТЬ_К_РЕПОЗИТАРИЮ\conf\passwd» в любом текстовом редакторе и впишите в нём «логин_пользователя = пароль_пользователя» (разделителем служит знак равенства). Пример правильного файла passwd:

### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
# harry = harryssecret
# sally = sallyssecret
vova = kjkj345K
anton = Gh74oJId
dima = ir9895498
katya = o894584578
sergey = 985kdfjdfk

Убираем символ комментария из строки:

realm = My First Repository

В ней указывается имя Вашего репозитория. После знака равенства вместо My First Repository Вы можете указать любое другое имя. Оно выводится при запросе логина и пароля.

Настройка сервера с простой (simple) авторизацией завершена. Пример правильного файла конфигурации сервера:

### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository.  (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)

### Visit http://subversion.tigris.org/ for more information.

[general]
### These options control access to the repository for unauthenticated
### and authenticated users.  Valid values are "write", "read",
### and "none".  The sample settings below are the defaults.
anon-access = none
auth-access = write
### The password-db option controls the location of the password
### database file.  Unless you specify a path starting with a /,
### the file's location is relative to the directory containing
### this configuration file.
### If SASL is enabled (see below), this file will NOT be used.
### Uncomment the line below to use the default password file.
password-db = passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control.  Unless you specify a path
### starting with a /, the file's location is relative to the the
### directory containing this file.  If you don't specify an
### authz-db, no path-based access control is done.
### Uncomment the line below to use the default authorization file.
#authz-db = authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa.  The default realm
### is repository's uuid.
realm = Test Repository

[sasl]
### This option specifies whether you want to use the Cyrus SASL
### library for authentication. Default is false.
### This section will be ignored if svnserve is not built with Cyrus
### SASL support; to check, run 'svnserve --version' and look for a line
### reading 'Cyrus SASL authentication is available.'
# use-sasl = true
### These options specify the desired strength of the security layer
### that you want SASL to provide. 0 means no encryption, 1 means
### integrity-checking only, values larger than 1 are correlated
### to the effective key length for encryption (e.g. 128 means 128-bit
### encryption). The values below are the defaults.
# min-encryption = 0
# max-encryption = 256

Теперь пора проверить созданный нами svn-сервер, но сначала мы должны перезапустить его чтобы он смог считать изменённые конфигурационные файлы. Для этого набираем «Windows+R» — «cmd.exe«. В открывшейся командной строке пишем слелующие команды (по порядку):

net stop CSVNsvnserve
net start CSVNsvnserve

Открываем 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 найдите следующие строки:

DAV svn
SVNParentPath C:\svn_repository

и замените на такие:

DAV svn
SVNPath C:\svn_repository

AuthType Basic
AuthName "Subversion repository"
AuthUserFile C:\svn_repository\conf\appswd
Require valid-user

Здесь с:\svn_repository — путь к репозиторию svn. Измените в соответствии с Вашими настройками.

Теперь нужно создать файл паролей Apache. Для этого откройте командную строку Windows («Win+R» — «cmd.exe«) и выполните следующие команды:

cd "%PROGRAMFILES%\CollabNet\Subversion Server\httpd\bin"
htpasswd -cmb C:\svn_repository\conf\appswd ЛОГИН_ПОЛЬЗОВАТЕЛЯ_1 ПАРОЛЬ
htpasswd -mb C:\svn_repository\conf\appswd ЛОГИН_ПОЛЬЗОВАТЕЛЯ_2 ПАРОЛЬ
...
htpasswd -mb C:\svn_repository\conf\appswd ЛОГИН_ПОЛЬЗОВАТЕЛЯ_N ПАРОЛЬ

Внимание! Параметр -cm нужно указывать только при первом создании пользователя, т.к. он перезаписывает имеющийся файл. В пути к файлу паролей буква диска обязательно должна быть в верхнем регистре.

В качестве ЛОГИН_ПОЛЬЗОВАТЕЛЯ нужно указать все логины пользователей, указанные в файле passwd. Пароли также должны быть идентичны.

Настройка SVN over Apache 2 была успешно завершена. Теперь нужно перезапустить сервер командами консоли Windows:

net stop CollabNetSubversionApache
net start CollabNetSubversionApache

Протестировать сервер можно так: http://127.0.0.1:ПОРТ/ в любом веб-браузере. Будет запрошен логин и пароль для доступа к репозиторию.

Категории:HOWTO Метки:, ,
  1. Евгений
    31 Октябрь 2010 в 00:23 | #1

    Большущее спасибо! А то уж было отчаялся, а вы очень помогли. Только в строке AuthUserFile С:\svn_repository\conf\appswd метка тома «С» написана на кириллице, сначала думал в чем проблема, потом лог-файл глянул. )

  2. 31 Октябрь 2010 в 12:11 | #2

    @Евгений
    Спасибо. Исправил в статье.

  3. Иван
    29 Январь 2011 в 02:14 | #3

    Спасибо! Написано отлично. Коротко и доходчиво.

  4. Sergey Semka
    29 Январь 2011 в 17:39 | #4

    «Протестировать сервер можно так: http:// в любом веб-браузере. Будет запрошен логин и пароль для доступа к репозитарию.»

    А как сделать, чтобы доступ был организован через https:// ??

  5. 30 Январь 2011 в 12:14 | #5

    @Sergey Semka
    1. Получите SSL-сертификат для домена.
    2. Настройте сервер Apache на использование SSL (порт 443) и укажите полученные файлы сертификатов в конфиг.
    3. Перезапустите сервер.

    P.S. В статье не описано создание сервера с SSL, т.к. большинству пользователей это не требуется и SSL-сертификаты для доменов платные.

  6. Евгений
    7 Февраль 2011 в 18:56 | #6

    @V1TSK
    Можно создать его самостоятельно, но будет появляться предупреждение о неподтвержденности сертификата на официальном сервисе, а так как покупать сертификат для некоммерческих и небольших проектов не имеет смысла, тем более доступ к SVN имеет пара человек, то я на это деньги решил не тратить. Апач перевел полностью на SSL (прослушивается сразу 443 порт) и сделал перенаправление с HTTP на HTTPS, т.к. веб на этой машине не используется для публичного пользования.
    В итоге доступ к SVN у меня осуществляется напрямую по адресу, (если делать по инструкции выше, то есть ничего не указывая). Кому нужна будет помощь с той или иной настройкой — обращайтесь, эту страницу добавил как памятку.

  7. 8 Февраль 2011 в 00:41 | #7

    @Евгений
    Подписанный сертификат SSL можно получить и полностью бесплатно от компании StartSSL. Подробности тут: http://habrahabr.ru/blogs/sysadm/106252/

  8. Fagot
    12 Март 2011 в 15:32 | #8

    Спасибо! Отличный ман!

  9. Евгений
    3 Май 2011 в 20:47 | #9

    @V1TSK
    Отлично, спасибо.
    Разобрался с помощью статьи — http://wolandblog.com/1322-besplatnye-ssl-sertifikaty-palyu-temu/
    Теперь подписанный годовой сертификат. :)
    А когда закончится, на резерв в 90 дней можно использовать freessl.su.

  10. 4 Май 2011 в 12:41 | #10

    @Евгений
    Когда закончится, можно будет получить новый у того же StartSSL :-) .

  11. amhamitov
    28 Ноябрь 2011 в 21:16 | #11

    установил CollabNet Subversion Edge 2.1.1 (for Windows 64 bit) но вот с правами доступа не могу разобраться. в файле authz нет вообще ### ACCESS CONTROL SECTION . в веб редакторе Access Rules пробовал прописать права доступа, толку нет * = rw только проходит. Может подскажете где разграничить права.

  12. 29 Ноябрь 2011 в 11:24 | #12

    @amhamitov
    CollabNet Subversion Edge — редкостная гадость, написанная на Java, пользоваться которой практически невозможно. Если Вам нужен svnserve (без Apache), возьмите простой и быстрый SlikSVN (во время установки обязательно установите все компоненты и особенно svnserve). Прочитайте статью о его настройке.

Представьтесь, пожалуйста! Адрес электронной почты должен быть действительным. Если Ваш комментарий предполагает ответ, мы ответим Вам в ближайшее время (публично, либо на указанный email).
Для защиты от нежелательных комментариев, пожалуйста введите текст, который Вы видите на картинке в поле CAPTCHA Code. Если текст на картинке плохо читается, нажмите кнопку Обновить около картинки. Регистр букв не имеет значения.
*



Внимание! Запрещено публиковать любые ссылки в тексте комментария, иначе Ваш комментарий сразу будет отправлен в Спам и не будет опубликован.