“Допиливание” subversion на Debian Lenny

Понадобилось тут одной конторе поставить Subversion для разработчиков. Сервер – Debian Lenny. Так как я раньше эту систему VCS не устанавливал и не администрировал, то заработало все далеко не с первого раза.

Самым неприятным сюрпризом было то, что после установки и запуска svnserve не прописывался в автоматический запуск и указывал фиг знает куда. Сразу после старта его нужно прибить и запустить с верными параметрами (указать где находится каталог с репозиториями). Как-то совершенно не по-дебиановски.

Не я первый столкнулся с этой проблемой. Решается так (подходит и для других версий Debian, и для Ubuntu):

Берем скрипт запуска/остановки сервиса, редактируем (указываем в параметрах запуска путь к нашим репозиториям), помещаем в init.d:

$ wget http://odyniec.net/articles/ubuntu-subversion-server/svnserve
$ nano ./svnserve
$ sudo mv ./svnserve /etc/init.d/
$ sudo chmod +x /etc/init.d/svnserve

Инициализируем скрипт и перезапускаем сервис:
$ sudo update-rc.d svnserve defaults
$ sudo/etc/init.d/svnserve stop
$ sudo /etc/init.d/svnserve start

Если ошибок нет и все работает по протоколу svn://, то на этом наша работа закончена.

Источник: Setting Up an Ubuntu Subversion Server.

6 Comments

smanFebruary 17th, 2011 at 18:52

В Debain можно svnserve запускать через xinetd.
1. инсталлировать его (apt-get install xinetd)
2. в /etc/xinetd.d добавить файл svn
3. в /etc/xinetd.d/svn
поместить:

# Begin /etc/xinetd.d/svn
service svn
{
port = 3690
socket_type = stream
protocol = tcp
wait = no
user = svn
server = /usr/bin/svnserve
server_args = -i -r /srv/svn/repositories
}
# End /etc/xinetd.d/svn

предварительно конечно нужно создать юзера svn. директорий репозитория и т.д и определиться с политикой безопасности, можно svn и под рутом запустить :).

4. После перезапуска xinetd в /etc/init.d процесс xinetd открывает порт 3690

smanFebruary 17th, 2011 at 18:53

т.е. это будет более “по-дебиановски”…

Плюшевый КрысFebruary 17th, 2011 at 20:21

Не уверен, что это именно “по-дебиановски”, но решение вполне имеет право на жизнь.

AvariNovember 8th, 2011 at 19:30

Я только что сделал вот по этой заметке:
http://www.memonic.com/user/2ni/id/1qgWU
В ней ссылка на более пространный оригинал… Замечательно то, что не надо вообще ставить xinetd, вешать демоном svnserve и высовывать его за брандмауэр (некоторые разработчики коннектятся “снаружи”). Достаточно уже установленного openssh-server ;)
Разработчики подключаются с помощью вот таких вот хитрых url:
svn+ssh://svn@host.tld/repo
Аутентификация выполняется по ключу ssh, к этому же ключу жёстко привязывается имя разработчика внутри svn (внимательно читайте конец статьи ;) )
Я страшно доволен данным решением. Красиво, минималистично и безопасно.

Плюшевый КрысNovember 8th, 2011 at 19:45

Если xорошо работает, то почему бы и нет?

Leave a comment

Your comment