2008-05-14

Subversionインストール。

Subversionをうちのサーバに入れた。 メモ。

FreeBSD6.2
subversion-1.4.6_1


インストール。

まずはportsでさくっとmake install。
オプションはこんな感じにした。




#cd /usr/ports/devel/subversion
#make WITH_MOD_DAV_SVN=YES WITH_APACHE2_APR=YES


x Options for subversion 1.4.6_1 x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x x [ ] PERL Perl bindings x x
x x [ ] PYTHON Python bindings x x
x x [ ] RUBY Ruby bindings x x
x x [X] JAVA Java (JavaHL) bindings x x
x x [X] MOD_DAV_SVN mod_dav_svn module for Apache 2.X x x
x x [X] APACHE2_APR Use APR from Apache 2.X x x
x x [X] NEON WebDAV/Delta-V repository access module x x
x x [X] BDB db4 repository backend x x
x x [ ] ASVN Build and install Archive SVN (asvn) x x
x x [ ] MAINTAINER_DEBUG Build debug version x x
x x [ ] SVNSERVE_WRAPPER Enable svnserve wrapper x x
x x [ ] BOOK Install the Subversion Book x x

というわけで、インストール自体はあっさり終了。











で、こっから設定。


まずは方向性を決定しよう。
▼apacheのWebDAVとかせずに、スマートにsvnserveを動かす方向性でいこうと思う。というか、ぶっちゃけ、WebDAVがどんな感じかわからない。
▼(でも、後々WebDAVにも挑戦したいから、オプションつけてインストールした。)
▼svnserveデーモン常時起動の必要性もないので、inetdから受け付ける。
▼ちなみに僕自身は、クライアントのWindowsで、TortoiseSVNを使う。



さて、いよいよ設定本番。



まずは、svnserveを扱うユーザを作成。
ユーザの名前は「svn」とした。



# adduser
Username: svn
以下、略。




次に、リポジトリにするディレクトリを作成。
/var/svnとした。
svnserveが書き込めるよう、パーミッションを設定。svnさんの統治下へ。



# cd /var
# mkdir svn
# chown -R svn:svn svn


リポジトリに。



# svnadmin create /var/svn




リポジトリごとに設定ファイルが用意される。
conf/svnserve.confがそいつ。見てみる。



# cd svn/conf
# less svnserve.conf

### 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.)
以下略

適当訳 : このファイルはsvnserveの設定ファイルさ、ただし、キミがこのリポジトリに(直接)アクセスして使うなら、な。(もし、キミがhttp:とか、file:を通してアクセスするなら、このファイルは関係ないぜ。)

つまり、apacheのWebDAVオプションを使うなら、このファイルは関係ない、、ということだろう。
というわけで、今回の場合は積極的にいじりにいく。



# vi svnserve.conf


変更点。



anon-access = none
auth-access = write
コメントアウトを外して、ちょっと書き換え。
非認証(anon)の人はお断り、認証(auth)したら熱烈歓迎。




password-db = passwd
コメントアウトを外すだけ。
認証に使う、ユーザとパスワードの設定ファイルのこと。




realm = Test Repository
このリポジトリの名前。適当に。




さきほどの「ユーザとパスワードの設定ファイル」を設定。



# vi passwd

元から書いてある例のとおりに書く。
具体的には[users]の後に、user = passwordの順番。
パスワードが平文なのは仕様。





今度は、inetdの設定。



# cd /etc
#vi inetd.conf


書き加える。



svn stream tcp nowait svn /usr/local/bin/svnserve svnserve -i


inetd再起動。



# /etc/rc.d/inetd restart
Stopping inetd.
Starting inetd.






と、こんな感じ。


inetdの再起動忘れないようにしましょう。
サーバ初心者の俺は、知ってたのになぜか飛ばして悩みました。
小一時間。
ちなみに、その場合、
 Can't connect to host
とか
 対象のコンピュータによって拒否されたため、接続できませんでした。
とか言われます。


inetd.conf、コピペはよくないです。
間違ってDebiianの人のを写したら、動きませんでした(あたりまえ)。
追記20080515
 エラー表示は、
  svn: Connection closed unexpectedly
 というものでした。


svnserve.confで、行頭に半角スペース入ってると動きません。
サーバ初心者の俺は、これを知らずにハマりました。おおよそ、1日。
追記20080515
 エラー表示は、
  [path_to_repository]/conf/svnserve.conf:13: Option expected
 というものでした。13は、svnserve.confの該当行番号。

リポジトリのchownは忘れずに。
忘れてて、最後の最後に出てきたエラーはこれでした。
簡単だからいいけど。









参考にしたページ。


▽Subversionでサイト管理 (Linux Home Server Memoさん)
  http://asshole.dip.jp/subversion.php
Svnserveでの運用設定が分かりやすい。ただしDebian。
方向性とか、いろいろ、ぱくらせてもらいました。
ぶっちゃけ、このページ見たほうが、僕の説明より分かりやすいかも。

▽Subversionのインストールと設定(svnserve編) (Gentoo Sideさん)
  http://www.gside.org/Gentoo/subversion/subversion2.html
このページも見やすくて分かりやすかった。

▽Subversionによるバージョン管理  (Think ITさん)
  http://www.thinkit.co.jp/free/article/0611/2/2/
リポジトリの意味を知ったのは、ここのページでした・・・。


その他、ぐぐったらでてきた人たち。
 http://fuga.jp/~densuke/hiki/?subversion
 http://smdn.invisiblefulmoon.net/linux/debian/inetd-svnserve/
 http://www.caldron.jp/~nabetaro/svn/svnbook-1.4-final/svn.serverconfig.svnserve.html

その他、ぐぐって参考にしたのにうっかりメモを取り忘れた、数々のページたち。









Very Thx to
 ふっきぃ

Thx to
 じんちゃん
 P
 maya

2 件のコメント:

maya さんのコメント...

いつのまにかsvnなんていうポート番号が割り当てられているのね。
http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services#rev1.97

Wataru.K さんのコメント...

僕も、/etc/services確認して、「おぉ~」とか思いましたよw