Запуск сервера Subversion

Запуск сервера Subversion

Этот раздел описывает установку, администрирование и защиту сервера Subversion.

Зависимости сервера Subversion

Требуемые

Subversion-1.1.3 и OpenSSH-3.9p1

Установка сервера Subversion.

Следующие инструкции установят сервер Subversion, который будет настроен для использования OpenSSH в качестве метода защищенного удаленного доступа с svnserve, доступным для анонимного доступа.

Ностройка сервера Subversion состоит из следующих шагов:

1. Установка пользователей, групп и прав доступа

На начальном этапе конфигурации вы должны быть пользователем root. Создадим пользователя и группу svn при помощи следующих команд:

groupadd svn && useradd -c "SVN Owner" -d /home/svn -m -g svn -s /bin/false svn

Если вы планируете иметь несколько репозитариев, то вы должны иметь отдельные группы для каждого репозитария для упрощения администрирования. Создадим для тестового репозитария группу svntest и добавим в нее пользователя svn запуском следующих команд:

groupadd svntest && usermod -G svntest svn

Дополнительно вы должны установить umask 002 пока работаете с репозитарием, поэтому все новые файлы могут быть переписаны только их владельцем и группой. Это делается принудительно созданием скрипта-обертки дляr svn и svnserve:

mv /usr/bin/svn /usr/bin/svn.orig && mv /usr/bin/svnserve /usr/bin/svnserve.orig && cat >> /usr/bin/svn << "EOF" #!/bin/sh umask 002 /usr/bin/svn.orig "$@" EOF cat >> /usr/bin/svnserve << "EOF" #!/bin/sh umask 002 /usr/bin/svnserve.orig "$@" EOF chmod 0755 /usr/bin/svn{,serve}
[Замечание]

Замечание

Если вы используете Apache для работы с репозитарием через HTTP, даже для анонимного доступа, вы должны обернуть /usr/sbin/httpd в простой скрипт.

2. Создание Subversion репозитария.

С subversion-1.1.0 и выше доступен новый тип репозитария хранения данных - FSFS. Есть работа для ускорения при пмощи нового драйвера, хотя репозитарий теперь может размещаться и на точке монтирования сетевого ресурса и любое повреждение не требует от администратора восстановления репозитария. Для большей информации и сравнения между FSFS и BDB просмотрите http://svnbook.red-bean.com/svnbook-1.1/ch05.html#svn-ch-5-sect-1.2.A. Опционально вы можете поместить bdb в месте fsfs в следующей команде для создания резервных данных BerkelyDB.

Создадим новый репозитарий Subversion запуском следующих команд:

install -d -m0755 /srv && install -d -m0755 -o svn -g svn /srv/svn/repositories && svnadmin create --fs-type fsfs /srv/svn/repositories/svntest

Теперь, после создания репозитария, нам необходимо наполнить его полезной информацией. Вам понадобиться определенная структура директорий, созданная точно так, как должен выгляедеть ваш репозитарий. Эдесь представлен пример установки структуры BLFS с корнем в svntest/. Вам понадобиться установить дерево директорий, похожее на следующее:

svntest/ # Имя репозитария trunk/ # Содержит дерево исходников BOOK/ bootscripts/ edguide/ patches/ scripts/ branches/ # Нобходима для дополниительных ответвлений tags/ # Необходима для разметки точек релиза

Как только вы создали структуру директорий, как показано выше, вы готовы сделать начальный импорт:

svn import -m "Initial import." \ [/путь/к/дереву/исходников] \ file:///srv/svn/repositories/svntest

Теперь двигаемся дальше и изменим информацию о владельце и группе для репозитария и добавим вашего обычного пользователя в группы svn и svntest:

chown -R svn:svntest /srv/svn/repositories/svntest && chmod -R g+w /srv/svn/repositories/svntest && chmod g+s /srv/svn/repositories/svntest/db && usermod -G svn,svntest,[вставьте имеющие группы] [имя пользователя]

svntest это группа, назначенная для репозитария svntest. Как было указано ранее, это упрощает администрирование многих репозитариев при использовании для аутентификации OpenSSH. Двигаясь дальше, вам понадобится добавить в группы svn и svntest вашего обычного пользователя и других дополнительных пользователей, которым вы хотите дать доступ на запись в репозитарий.

В дополнение отметьте, что у новой директории db репозитария установлен GID бит. При использовании любого расширенного метода аутентификации (например ssh), устанавливается бит приклевания, поэтому все новые файлы будут принадлежать пользователю, но не группе svntest. Кто угодно в группе svntest может создать файлы, но все еще дается полный доступ на запись для группы в эти файлы. Это предотвращает блокирование других пользователей репозитария.

Теперь перерегистрируйтесь в системе с правами обычного пользователя и обратитесь к вашему новому репозитарию, используя svnlook:

svnlook tree /srv/svn/repositories/svntest/
[Замечание]

Замечание

Вам может понадобиться перерегистрироваться для обновления информации о группах. Команда 'su [имя пользователя]' так же должна здесь сработать.

3. Настройка сервера

Как упоминалось ранее, эти инструкции настроят сервер для использования ssh только для доступа на запись в репозитарий, а для предоставления анонимного доступа использется svnserve. Есть несколько других способов предоставления доступа в репозитарий. Эти дополнительные конфигурации лучше объяснены в http://svnbook.red-bean.com/.

Настройку доступа надо выполнить для каждого репозитария. Создадим файл svnserve.conf для репозитария svntest использованием следующих команд:

cp /srv/svn/repositories/svntest/conf/svnserve.conf \ /srv/svn/repositories/svntest/conf/svnserve.conf.default && cat > /srv/svn/repositories/svntest/conf/svnserve.conf << "EOF" [general] anon-access = read auth-access = write EOF

В файле конфигурации нет больше ничего. Заметьте, что необходим только раздел general. Обратитесь к файлу svnserve.conf.default за информацией по использованию встроенного в svnserve метода аутентификации.

4. Запуск сервера

Есть два пути для запуска svnserve. Более общим является путь запуска через процессы inetd или xinetd. Альтернативно, вы можете использовать стартовый скрипт для запуска сервиса при загрузке системы.

[Замечание]

Замечание

Если вы не хотите предоставлять анонимный доступ в ваши svn репозитарии или использовать встроенную в svnserve аутентификацию, то вам не надо запускать svnserve.

Если вы используете inetd, добавьте следующую строку в файл /etc/inetd.conf при помощи следующих команд:

cat >> /etc/inetd.conf << "EOF" svn stream tcp nowait svn /usr/bin/svnserve svnserve -i EOF

Если вы используете xinetd, добавьте следующие строчки в файл /etc/xinetd.conf:

cat >> /etc/xinetd.conf << "EOF" service svn { port = 3690 socket_type = stream protocol = tcp wait = no user = svn server = /usr/bin/svnserve server_args = -i -r /srv/svn/repositories } EOF

Наконец, если вы просто хотите запускать сервер при загрузке, установите стартовый скрипт svn, включенный в пакет blfs-bootscripts-6.0.

make install-svn

Последнее обновление 2005-01-01 07:49:30 -0700