Subversion :

SVN+WebDAV+SSLをポートを分けて設定

SVNリポジトリをwebDAVベースで構築する場合、Apacheのconfを新たに作成する方法を以前にメモしておいたけど、今回は既存のhttpd-ssl.confに記述する方法をメモ。今回の方が合理的な運営ポリーシーだと思う。
更にポートの分離も導入。

構築環境は以下の通り
--------------
FreeBSD 6.2.x
Apache 2.2.x
*SVN、webDAV、SSLは設定済み

リポジトリPath
/home/svn/repos/

URI
https://example.co.jp:10001/
--------------


1.まずListenするポートを記述(30~40行目あたり)
----------------
Listen 10001
----------------

2.<VirtualHost>ディレクティブを加筆
---------------------------------------------
<VirtualHost _default_:10001>
ServerName example.co.jp
DocumentRoot /home/svn/
<Directory "/home/svn/www">
AuthType Basic
AuthUserFile /home/svn/etc/.htpasswd_admin
AuthName "Subversion Authentication"
Require valid-user
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<Location /projectA/plan1>
DAV svn
SVNAutoversioning on
SVNPath /home/svn/projectA/plan1
AuthType Basic
AuthUserFile /home/svn/etc/.htpasswd_admin
AuthName "Subversion Authentication"
Require valid-user
</Location>

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

SSLCertificateFile /usr/local/etc/apache22/server.crt
SSLCertificateKeyFile /usr/local/etc/apache22/server.key


</VirtualHost>
---------------------------------------------
最低限、Basic認証を入れておく。
htpasswdは/home/svn/etc/の中

証明書ファイルは自己証明を生成して
/usr/local/etc/apache22/
以下に設置。


リポジトリが増えたら
----------------------
<Location /projectB/plan1>
DAV svn
SVNAutoversioning on
SVNPath /home/svn/projectB/plan1
AuthType Basic
AuthUserFile /home/svn/etc/.htpasswd_admin
AuthName "Subversion Authentication"
Require valid-user
</Location>
----------------------
を追記
*リポジトリ生成はあらかじめ行う
# mkdir /home/svn/projectB/plan2
# svnadmin create /home/svn/projectB/plan2

SVN(Subversion)クライアント

TortoiseSVN

WindowsのSVNクライアントを探していてTortoise(トータス)SVNを選ばないテは無いと思う。 多分よほどの変わり者かFinderとの一体化を嫌がる人ぐらいだろう。 Finderとの一体化を嫌がる気持ちはそれなりに理解できるが、TortoiseSVNの機能の高さはそれでも特筆すべきだと思う。 バージョンも着実に重ね進化・安定化を計り続けているし、何よりも日本語環境に困らない。 svn://プロトコル以外にhttp://、https:// 更にsvn+ssh://にも対応している。 おそらくwindowsだけでなく、Mac、Linuxを含めてSVNクライアントの中で最も優秀なクライアントじゃないだろうか。 因みにバンドルされているマージアプリがDreamweaverの「ファイルの比較」機能として登録出来る。これもオイシイ。

参考URIhttp://www.gside.org/Gentoo/subversion/subversion_client.html


eSVN

結構いろんなところで名前を見かけた物の、使い勝手はあまり良くなかった。バージョンが未だ1.0未満だから今後に期待するしかないかもしれない。多様なプラットフォームに対応している(windows、Mac、Linuxなど)ようだが、IntelMac上では動作しなかった。今のところMacはPPCでしか動かない様子。

参考URI:http://www.versiontracker.com/dyn/moreinfo/macosx/27001


Subcommander

Finderとは一体化しないファイルブラウザベースのSVNクライアント。クロスプラットフォームなので、Win32, Unix, MacOSXで使える様子。以前IntelMac上で使用していたがかなり使いやすかった。
若干バギーな部分や独特のGUI、英語環境に悩まされつつも(recursiveとか耳慣れない言葉だった)
慣れればかなり強力な管理ツールだと実感できた。
現在2.0.0betaがリリースされたようで、活発に開発が行われている様子。イマイチ地味なSubversion開発コミュニティーの中では貴重な存在だと思う。
因みにSubcommanderにもSubmargeというマージアプリがバンドルされているが、こちらはDreamweaverの「ファイルの比較」機能として利用できなかった。残念。

参考URI:http://subcommander.tigris.org/


SCPlugin

Mac版のTortoiseSVNと呼ばれるべきSCPlugin。Finderに一体化出来るので、デザイナーでも使いやすいのが良い(らしい)。実際に使ってみたところ、IntelMacだったせいかイマイチ安定しなかった。
2007年1月末にアップデートされたようだが、やはり開発が停滞した観が否めない様子。

参考URI:
http://scplugin.tigris.org/servlets/ProjectDocumentList


SVN+WebDAV

当初、SVN+SSHの導入を考えていたが、SVNクライアントのSVN+SSH対応がイマイチなので、WebDAVとの連携で構築してみる。
SSL暗号化とbasic認証でセキュリティを高めることにした。


[install]
# cd /usr/ports/devel/subversion
# make WITHOUT_BDB="YES" WITH_MOD_DAV_SVN="YES" install clean


リポジトリ生成
# mkdir /home/svn/
# mkdir /home/svn/test
# svnadmin create /home/svn/test

オーナーとパーミションの変更
# chown -R www:www /home/svn
# chmod -R 0755 /home/svn

Basic認証生成
#cd /usr/local/etc/apache22/Includes
# htpasswd -c basic-htpasswd test
New password: ←testsvn
Re-type new password: ←testsvn
Adding password for user test

webdav_svn.conf生成
#nano /usr/local/etc/apache22/Includes/webdav_svn.conf
----------------------------------------------------------------

DAV svn
SVNAutoversioning on
SVNPath /home/svn/test
# SSLRequireSSL
# AuthsSVNAccessFile /usr/local/etc/apache22/authzsvn.conf
AuthType Basic
AuthUserFile /usr/local/etc/apache22/Includes/basic-htpasswd
AuthName "WebDAV Subversion Authentication"
Require valid-user

----------------------------------------------------------------

確認
http://localhost/svn/test/

SSLの有効化(リソース http://platz.jp/howto/apache_ssl6.html )
秘密鍵生成
#cd /usr/local/etc/apache22
# openssl req -new -x509 -nodes -out server.crt -keyout server.key -days 365

色々質問される--------------------------------------------------
Generating a 1024 bit RSA private key
.............++++++
.......++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Shinjyuku-ku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LOCALHOST inc
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:localhost←ここを省略するとsvnクライアントでエラーEmail Address []:
----------------------------------------------------------------
同じフォルダにSSLの秘密鍵 server.key とプライベート証明書 server.crt が出来る。
[root@dell /usr/local/etc/apache22]# ls
Includes extra httpd.conf.save mime.types server.key
envvars.d httpd.conf magic server.crt

httpd.conf書き換え 
# nano /usr/local/etc/apache22/httpd.conf

# Secure (SSL/TLS) connections
Include etc/apache22/extra/httpd-ssl.conf  ←#を取る

webdav_svn.conf書き換え
# nano /usr/local/etc/apache22/Includes/webdav_svn.conf

SVNPath /home/svn/test
SSLRequireSSL
# AuthsSVNAccessFile /usr/local/etc/apache22/authzsvn.conf ←#を取る

# /usr/local/etc/rc.d/apache22 restart

確認
http://localhost/svn/test/ ←不可
https://localhost/svn/test/ ←可

more.. "SVN+WebDAV" »

Subversion

サーバーの基本的な機能がそろってきたので、そろそろSubversionを導入しようと思う。その前に確認すべき事がある。なんでもSubversionを提供する環境は複数あるらしい。その中から、最適な環境を選択してセットアップしていくのだが、まずは調べて出てきた環境の一覧を書き出してみる。

-----------------------------------------------------------------
1.svnserver 単独実行
Subversionをデーモンとして常駐させる。基本的な方法。
メリット:設定が簡単(らしい)
デメリット:最初のパスワードのみ暗号化、それ以降は暗号化されない。
プロトコル:svn://


2.svn+ssh 
sshdをスーパーデーモンとして動作。セキュアな方法
メリット:暗号化される。余分なメモリを食わない
デメリット:1より設定が複雑。クライアント側でもsshに対応が必要
プロトコル:svn+svn://


3.Apacheモジュールとして動作 
Apacheをスーパーデーモンとして動作。モジュールの追加
メリット:SSLなら暗号化される。余分なメモリを食わない
デメリット:webDAVと絡んでより設定が複雑。Apacheに負荷が掛からないか疑念が残る
プロトコル:http:// https://
-----------------------------------------------------------------

ざっとこんな所だと思う。そのほかに方法があれば教えてください。
そして、今回はsvn+ssh環境で構築することに決定。
まず、大切なのがセキュリティー。一般的に考えてsshなら文句はない、と思いたい。そもそもsshdが動いている環境なので、メモリの肥大化も防げる。一石二鳥と言った感じ。svnserver単独実行はイントラ内だけなら理想的かもしれないが、今回はwebをターゲットにしているので、落選。一方、Apacheモジュールは捨てがたかったが、webDAVへの信頼性やApacheへの負荷を考えて今回は保留。いずれ構築してみたい。

RSS + Contuct

  • rss
  • email

Credit

Copyright (C) 2007 kappa-lab.com.
All Rights Reserved.