Передо мной встала следующая задача: установить SVN сервер под FreeBSD. До этого приходилось это делать под виндой - ни каких проблем не возникало. До сих пор с никсами дело имел мало, что уж там говорить о фре.Собственно, что я делаю (пока ковыряю у себя дома из-под вмвари, дабы не превратить работающий сервер в неработающий).
Скомпилил и установил /usr/ports/devel/subversion. С какими опциями компилить - представлял слабо, поэтому в открывшемся "окошке" отметил галочками все.
Далее, дописал в файлик /etc/rc.conf такие строчки:
svnserve_enable="YES"
svnserve_flags="--daemon --listen-port=3690"
svnserve_data="/home/svn/repos"
svnserve_user="svn"
svnserve_group="svn"Создал группу svn:
$ pw add group svn
И юзверя в ней:
$ pw add user svn -g svn -s /sbin/nologin
Это строка взята из одного фака по данному вопросу и мне, честно говоря, до конца неясно, зачем в качестве шела устанавливать /sbin/nologin,После этого создал репозитарий в /home/svn/repos/debug, а также сделал несколько действий по настройке учетных записей. Подобное я уже делал в винде, поэтому, вопросов не возникло.
Далее, установил права владения для юзверя svn
$ chown -R svn:svn /home/svnПосле этого ребучу комп (т.к. не знаю, как перечитать конфиги без ребута, если знаете - подскажите). Убедился, что svnserve запущен (командой ps auxww). Но что-либо импортировать в репозитарий не получается (в качестве клиента использую TortoiseSVN). Стабильно имею ошибку "Can't connect to host '10.10.135.74': Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение".
Какие адреса svnserve слушает?
sockstat/netstat -anL
есть файрвол или нет и разрешен ли в нем порт 3690?
>Какие адреса svnserve слушает?
>sockstat/netstat -anL
>есть файрвол или нет и разрешен ли в нем порт 3690?Мда... Не хотелось мне этого говорить, ну что ж, придется... Я полный чайник во FreeBSD, а в линухе работал толкьо на уровне юзера!..
>Какие адреса svnserve слушает?
Вы имеете ввиду, с каких ip запросы воспринимются svnserve? Нигде особо это не указывалось...
>есть файрвол или нет и разрешен ли в нем порт 3690?Черт его знает. Специально я его не устанавливал... В rc.conf добавил строчку "firewall_enable="NO"", если это вообще имеет смысл.
netstat -anL
sockstat |grep 3690
ipfw listскинь выводы сюда
>скинь выводы сюда
>netstat -anLCurrent listen queue sizes (qlen/incqlen/maxqlen)
Proto Listen Local Address
tcp4 0/0/10 127.0.0.1.25
tcp6 0/0/7 *.3690>sockstat |grep 3690
svn svnserve 598 3 tcp6 *:3690 *:*
>ipfw list
ipfw: getsockopt(IP_FW_GET): Protocol not available
похоже что у него pf или ipfilter
>С какими опциями компилить - представлял слабо, поэтому в открывшемся "окошке" отметил галочками все.Зря, обычно состояние по умолчанию как раз самодостаточно.
>tcp6 0/0/7 *.3690
>у тебя IP6 сеть?
Скорее всего нет. Соответственно должно быть
tcp4 0/0/7 *.3690
как вариант
cd /usr/ports/devel/subversion
make deinstall
удалить файлик /var/db/ports/subversion/options
и поставить с опциями по умолчанию
>[оверквотинг удален]
>>
> у тебя IP6 сеть?
> Скорее всего нет. Соответственно должно быть
> tcp4 0/0/7
> *.3690
> как вариант
> cd /usr/ports/devel/subversion
> make deinstall
> удалить файлик /var/db/ports/subversion/options
> и поставить с опциями по умолчаниюзачем удалять руками файлик с шансом ошибиться если можно
make rmconfig
>Какие адреса svnserve слушает?
>sockstat/netstat -anL
>есть файрвол или нет и разрешен ли в нем порт 3690?Добавил в inetd.conf строчку (взята с минимальными изменениями из оф. книжки по svn)
> svn stream tcp nowait root /usr/bin/svnserve svnserve -i
И запустил inetd.
После этого на попытку коммита из виндузячего компа имею ошибку "Connection close unexpectly". Тоесть соединение устанавливается, но почему-то обрывается.
Подскажите, что я делаю неправильно? Может во фре нужны какие-то дополнительные манипуляции с конфигами только для того, разрешить прослушивание нужных портов определенными сервисами? В общем я совершенно в тупике,
>[оверквотинг удален]
>> svn stream tcp nowait root /usr/bin/svnserve svnserve -i
>
>И запустил inetd.
>
>После этого на попытку коммита из виндузячего компа имею ошибку "Connection close
>unexpectly". Тоесть соединение устанавливается, но почему-то обрывается.
>
>Подскажите, что я делаю неправильно? Может во фре нужны какие-то дополнительные манипуляции
>с конфигами только для того, разрешить прослушивание нужных портов определенными сервисами?
>В общем я совершенно в тупике,Уточните пожалуйста, каким образом клиент подключается к репозитарию - ИМХО,существует, не менее 5 методов подключения:
svn://
svn+ssh://
http://
https://
file://
И только двум надо svnserve...
Хотя, похоже что в Вашем случае надо, но тем не менее...
>[оверквотинг удален]
>Скомпилил и установил /usr/ports/devel/subversion. С какими опциями компилить - представлял слабо, поэтому
>в открывшемся "окошке" отметил галочками все.
>
>Создал группу svn:
>$ pw add group svn
>И юзверя в ней:
>$ pw add user svn -g svn -s /sbin/nologin
>Это строка взята из одного фака по данному вопросу и мне, честно
>говоря, до конца неясно, зачем в качестве шела устанавливать /sbin/nologin,
>Насколько я понимаю, пользователь и группа создаются при установке порта автоматически.
Устанавливать шелл надо в целях повышения безопасности системы - этому пользователю шелл не будет полезен, а системе может оказаться вреден.>Далее, установил права владения для юзверя svn
>$ chown -R svn:svn /home/svn
>
>После этого ребучу комп (т.к. не знаю, как перечитать конфиги без ребута,
>если знаете - подскажите). Убедился, что svnserve запущен (командой ps auxww).в /usr/local/etc/rc.d/ лежат скрипты запуска, в том числе и svnserve
Его можно запустить с параметрами restart,stop,start..>Но что-либо импортировать в репозитарий не получается (в качестве клиента использую
>TortoiseSVN). Стабильно имею ошибку "Can't connect to host '10.10.135.74': Подключение не
>установлено, т.к. конечный компьютер отверг запрос на подключение".Еще советы:
1. Запускайте сервер либо собственным даймоном, через рц.конф, или через инетд, но никак не одновременно.2. Запустите даймон в отладочном режиме, если есть (я svnserve не использую, потому не знаю), и попробуйте подключиться.
Всем большое спасибо за рекоммендации - узнал не мало нового! Проблема решилась простым прописыванием собственного ip при запуске svnserve. Тоесть, нужно сделать следующее:svnserve_enable="YES"
svnserve_flags="--daemon --listen-port=3690 --listen-host 10.10.135.74"
svnserve_data="/home/svn/repos"
svnserve_user="svn"
svnserve_group="svn"Почему это нужно было делать явно - не знаю, наверное, следствие моих ошибок при установке. В общем, буду продложать курить доки...
Для соединения используется svn:// протокол. Использовать inetd необходимость отпала.
Была та же проблема, благодарю за нитку - сэкономило время.Думаю, что по умолчанию собранный svnserve слушает ipv6, а при явном указании интерфейса ipv4:
[bugz@vedi /devel/email2trac]$ sudo svnserve --daemon --root=/svn --threads && netstat -a | grep LISTEN | grep svn && sudo kill `ps -aux | grep svn | awk '{print $2}'` && sudo sudo svnserve --daemon --root=/svn --threads --listen-host=192.168.9.99 && netstat -a | grep LISTEN | grep svn
tcp6 0 0 *.svn *.* LISTEN
tcp4 0 0 vedi.svn *.* LISTEN
[bugz@vedi /devel/email2trac]$
а вот если слушать нада несколько ip то можно сделать так:sysctl net.inet6.ip6.v6only=0
После этого svnserve вешается на ip4.
>а вот если слушать нада несколько ip то можно сделать так:
>
>sysctl net.inet6.ip6.v6only=0
>
>После этого svnserve вешается на ip4.изменение системных переменных просто так не очень здорово, т.к. х.з., на что ещё повлияет, если просто надо, чтобы слушал на любом ip4, то лучше написать:
--listen-host=0.0.0.0
>изменение системных переменных просто так не очень здорово, т.к. х.з., на что
>ещё повлияет, если просто надо, чтобы слушал на любом ip4, то
>лучше написать:
>--listen-host=0.0.0.0спасибо большое. помогло.