Установка и настройка SVN-сервера под Windows
Введение
В данном HOWTO я подробно опишу как установить и настроить SVN (subversion) сервер под ОС Windows.
Статья о настройке прав доступа SVN-сервера доступна здесь.
Шаг 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
Строка “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 С:\svn_repository AuthType Basic AuthName "Subversion repository" AuthUserFile С:\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:ПОРТ/ в любом веб-браузере. Будет запрошен логин и пароль для доступа к репозитарию.
Последние комментарии