開発者のブログ『そまりぐ!Second』

開発者の趣味のブログです。役に立つかもしれない記事を書いていきます。間違いなど見つけましたら、コメント等でご指摘頂けると嬉しいです。

Ubuntu ServerでSVNサーバ構築

Subversionリポジトリサーバを立てた際のメモを整理してみました。

Ubuntu Serverのインストール〜初期設定

Ubuntu Server 11.04をインストール。

ダウンロードしたイメージをDVDに書き込み、外付けDVDドライブからインストール。

ネットワーク設定

IPを固定する。

$ sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1

$ sudo touch /etc/resolv.conf
$ sudo vi /etc/resolv.conf
nameserver 192.168.0.1

$ sudo /etc/init.d/networking restart

確認。

$ nslookup google.co.jp
OpenSSHのインストール
$ sudo apt-get update
$ sudo apt-get install openssh-server

外の世界から接続する場合はセキュリティの為設定するが、今回は省略する。
以降は開発PCからリモート操作。

Subversionのインストール〜初期設定

Subversionのインストール
$ sudo apt-get install subversion
サーバーにリポジトリを作成
$ mkdir /home/hoge/svn-repos
$ svnadmin create /home/hoge/svn-repos
適当なファイルを作ってインポートする
$ mkdir /home/hoge/tmp
$ echo 'hello, svn' > /home/hoge/tmp/hello.txt
$ cd /home/hoge/svn-repos
$ svn import -m "importing Test project" . file:///home/hoge/svn-repos/hello/trunk
svn+sshで接続するように設定する。

複数人で使う必要がないので、今回はユーザhogeで接続できるようにする。

$ cd conf
$ ls
authz  passwd  svnserve.conf

$ vi svnserve.conf

[general]セクションに以下を追加。

anon-access = none
auth-access = write
authz-db = authz
$ vi authz

以下を追加してhogeのコミットを許す。

[/]
hoge = rw

これで準備完了。設定は他にもやり方があると思う。

svn+sshで接続

MacとWindwosでチェックアウトしてみる。

Mac OS】ターミナルで適当なディレクトリにチェックアウトする。
その前にsshコマンドで接続してみる。

$ ssh -l hoge 192.168.0.100
$ exit

Macに戻って、適当なディレクトリにチェックアウト。

$ svn checkout svn+ssh://hoge@192.168.0.100/home/hoge/svn-repos/hello/trunk/ .

どういうわけかパスワードを2回聞かれるので、2回入力する。
チェックアウトされたことを確認。

$ ls -la

Windows
TortoiseSVNをインストールしておく。
エクスプローラで右クリックして、TortoiseSVN>Settingsをクリック。
一覧からNetworkを選択して、SSH client欄のボタンからTortoisePlink.exeを選択する。
私の場合はこんな場所にあった。"C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe"
早速チェックアウトしてみる。
エクスプローラで右クリックして、SVN Checkout...をクリック。
URL欄に「svn+ssh://hoge@192.168.0.100/home/hoge/svn-repos/hello/trunk/」
と入力してそれ以外の項目はそのままで、OKボタン押す。
やはりパスワードを2回聞かれるので、2回入力して、チェックアウト完了。

コミット時に"attempt to write a readonly database"と表示される場合、権限を直す。
$ ls -l /home/hoge/svn-repos/db/
-rw-r--r-- 1 root        hoge 8192 2011-09-04 17:15 rep-cache.db
$ chmod g+w /home/hoge/svn-repos/db/rep-cache.db

原因を調べてみたところ、おそらく、最初のインポートの際にsudoを付けてしまったため、所有者がrootユーザーとなってしまった。
ついでに、リポジトリを複数のユーザで共有する場合はumaskに002、ディレクトリにはSGIDを設定する必要がある。

コミットに成功したら、完成。


最後に、MacbookのみLANの外で使う場合があるので、ローカルIPで接続するのは不便だ。サーバと同じLAN内でもドメイン名で接続できるようにする。
DNSサーバを立てるのは気が向かなかったので、今回はhostsファイルを編集する。
MacOSX用のツールHosterを入れてみた。
Hosterでは、設定の有効/無効がクリックだけで切り替えできる。

接続確認
$ ssh -l hoge example.com
$ exit

SVNの設定については、以下の本が参考になりました。
Subversion実践入門?達人プログラマに学ぶバージョン管理