Этот раздел описывает установку, администрирование и защиту сервера Subversion.
Следующие инструкции установят сервер Subversion, который будет настроен для использования OpenSSH в качестве метода защищенного удаленного доступа с svnserve, доступным для анонимного доступа.
Ностройка сервера Subversion состоит из следующих шагов:
На начальном этапе конфигурации вы должны быть пользователем 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 в простой скрипт.
С 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 [имя пользователя]' так же должна здесь сработать.
Как упоминалось ранее, эти инструкции настроят сервер для использования 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 метода аутентификации.
Есть два пути для запуска 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