結果だけでなく過程も見てください

たい焼きさんの日々の奮闘を綴る日記です。

SubversionをSSHで利用する(1)(svn+ssh)

最近週末はマックやスタバで一日過ごしているたい焼きです。
食生活がヤバいです。。><
それはさておき。

自宅でSubversion+SSHを構築しましたので、
メモとして残しておきます。

まずはSSHを使用しないSVNのみについてお話します。
環境は以下の感じです。

項目 内容
OS CentOS 5.5 64bit版
サーバ名 TaiyakiServer
リポジトリを利用するユーザ名 taiyakisun
リポジトリのパス /home/svn-repos
クライアント側の作業パス C:\work

1.SVNがインストールされているか確認する

シェル上で以下を入力してバージョン情報が返ってきた場合は
SVNがすでにインストールされています。3.に進んでください。

svn --version

2.SVNのインストール

実は自分の環境では標準でSubversionがインストールされていたので
インストール作業やったことはないです。


ただ、Fedora CoreCentOSなどRedHat系OSの場合は以下のコマンドで
インストールできるはずです。


また、以下はApacheと連携する予定のある場合も考え、Apache
連携用のモジュールも同時にインストールしています。

yum -y install httpd subversion mod_dav_svn

3.SVN環境の構築

まずはリポジトリ用のフォルダを作成しましょう。

mkdir -p /home/svn-repos

ここで適切に読み取り、書き込みを設定します。
権限を以下のように設定します。

chown -R taiyakisun:taiyakisun /home/svn-repos
chmod -R 770 /home/svn-repos

リポジトリを作成します。

svnadmin create /home/svn-repos

サーバ上でSVNのデーモンを起動しましょう。

svnserve --daemon --root /home/svn-repos

この時点で読み取りのみ利用できるようになっているはずです。
最初にImportする必要があるので、書き込みを可能にします。


/home/svn-repos/conf/svnserve.confを開いて以下を
ファイルの末尾に追加します。

anon-access = read
auth-access = write
password-db = passwd

次に/home/svn-repos/conf/passwdに以下のフォーマットで
ユーザ名とパスワードを書き込みましょう。

[users]
(ユーザ名) = (パスワード)


例えばtaiyakisunというユーザで、melonというパスワードを
設定するなら以下のように書いてください。

[users]
taiyakisun = melon


これでリポジトリ全体についてのセキュリティが確保されました。
パスごとにセキュリティを設定できますが、それはまた今度。


さっそく使ってみましょう。
自分はSVNクライアントにTortoiseSVNを使用しており
あまりSVNコマンドには詳しくないのですが、文章で
説明するのがGUIだと大変なんでコマンドで説明します。


TortoiseSVN上のどの項目が対応しているかもなんとなくわかると
思うのできっと大丈夫です!^^;


「C:\MyProject」以下のファイルをインポートしてみます。

cd C:\MyProject
svn import -m "initial import" . svn://taiyakisun@TaiyakiServer/home/svn-repos/trunk

SVNスキームを使用して、ローカルドライブにある「C:\MyProject」以下の
ファイル群をTaiyakiServerのリポジトリ「/home/svn-repos」の
パス「trunk」にユーザ「taiyakisun」で格納しています。


次にチェックアウトしてみましょう。

cd C:\work
svn co svn://taiyakisun@TaiyakiServer/home/svn-repos/trunk MyProject


コミットしたいときはこうです。

cd C:\work
svn commit -m "Added some data" 


あれ、サーバ名やユーザ名は、と思われるかもしれませんが、
サーバ名についてはSVNはどこからチェックアウトされたものか記憶
しているので指定する必要はないです。


ユーザ名についてはこのコマンドを実行しているユーザが使用されます。
違うユーザを使いたいときはコマンドを打った後、パスワードを
入力せずエンターキーを押せばよいです。


それから、SVNスキームの場合ポート番号は3690番を使用します。
ファイアウォールなどで通信を許可するようにしてください。


また、注意点としてSVNスキームの場合はファイル内容が暗号化されず、
そのまま平文で転送されます。ですので、この時点ではインターネット等
公衆回線に公開するのはやめておいたほうがいいでしょう。


あくまでルータなどで保護された同一LAN内の利用までに留めてください。


この記事を書き始めたのがSVNの勉強を始めた当日ということもあり
間違っていることもあると思いますが、その際はぜひご指摘くださーい(他人任せ)