旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

使えるネットVPSとの戦い【マイリポジトリ作成編】(2)

2007年10月2日

(1)からの続きです。
【Subversionのインストール】
yumで前準備

yum install pkgconfig
yum install openssl-devel

・・・! yumでOpenSSL入るのか!(今気づいた。)
てか、入れてたらしい・・・。
とりあえず、オペレーションとしてはやってしまっていますが、多分不要です。

インストール
Apacheのプロセスを落としてから行うこと。

cd /usr/local/src
wget http://subversion.tigris.org/downloads/subversion-1.4.5.tar.bz2
wget http://subversion.tigris.org/downloads/subversion-deps-1.4.5.tar.bz2
tar jxf subversion-1.4.5.tar.bz2
tar jxf subversion-deps-1.4.5.tar.bz2
cd subversion-1.4.5
./configure \
--prefix=/usr/local/subversion-1.4.5 \
--with-apxs=/usr/local/apache-2.2.6/bin/apxs \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr \
--with-ssl \
--with-editor=/usr/local/bin/vim
make
make install

※aprとapr-utilは、Apacheと同じものを見ている。

シンボリックリンクを張る

cd /usr/local
ln -s subversion-1.4.5 subversion

最後に /usr/local/subversion/bin にパスを通す。

【WebDAV経由でSVNリポジトリを操作可能にする設定】
/usr/local/apache-2.2.6/conf/httpd.conf を開いて追記する

<Location "/repos/">
DAV                 svn
SVNParentPath       /home/webadmin/var/repos
SVNListParentPath   On
AuthType            Digest
AuthName            "Realm String"
AuthDigestProvider  file
AuthUserFile        /home/webadmin/path/to/users
Require             valid-user
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack = On
</Location>

各設定の説明

  • LocationとSVNParentPathとAuthUserFileの場所は、使ってる環境により変わる。
    便宜上、以下の説明はこのパスにあわせて説明する。
  • リポジトリのルートにアクセスする場合は、この設定だと http://mydomain.com/repos/ のように、最後が”/”で終わらないとアクセスできない。
  • BrowserMatchの設定は、IEでもWeb経由でリポジトリを見れるようにする設定。ダイジェスト認証の処理についてのIEのバグで、見れない場合があるため。
  • LocationMatchとSVNParentPathの相性が悪く、一緒に使うとSVNアクセス時に動かなくなる可能性がある。

上記と同様の設定を /usr/local/apache-2.2.6/conf/extra/httpd-ssl.conf にも行う。

続けて、ダイジェスト認証用のAuthUserFileを作成する。

touch /home/webadmin/path/to/users
htdigest /home/webadmin/path/to/users "Realm String" username

※対話的にパスの入力を求められるので設定すること。
※”Realm String”は、httpd.confのAuthNameとあわせること。
※特にLinuxのユーザ名等とあわせる必要は無く、任意で良い。

なお、参考として、SVNPathを使う場合の設定は以下のように書く

<Location "/repos/project_name">
DAV                 svn
SVNPath             /home/webadmin/var/repos/project_name
AuthType            Digest
AuthName            "Realm String"
AuthDigestProvider  file
AuthUserFile        /home/webadmin/path/to/users
Require             valid-user
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack = On
</Location>

こちらだと、細かい設定が出来る替わりに、リポジトリがひとつ増えるたびに設定を追加する必要がある。
今回は自分用なので、楽さを追及して上記の方の設定にした。

【動作確認】
SVNリポジトリを作成して、ブラウザによる閲覧・外部からのチェックアウト・内部からのチェックアウト、が動くかを確認する。

まず、SVNルートリポジトリの作成をする。
Apache実行用ユーザ(今回はwebadmin)に変わって

mkdir -p ~/var/repos

と、普通にディレクトリを作成する。

動作確認用のtestprojectリポジトリを作成する。

svnadmin create ~/var/repos/testproject

それでは動作確認の開始!

まず、Webブラウザにて、http://mydomain/repos と https://mydomain/repos にアクセスしてリポジトリが閲覧可能かをチェックする。可能ならばIEでも調べる。

続けて、外部サーバと内部から

svn checkout http://mydomain/repos/testproject
svn checkout https://mydomain/reops/testproject

これが動くかを調べて、動けばOK!

うわー、楽しいわぁ
ドットファイルとか管理できていいなー。

・・・なお、自分用のメモをブログに起こしたので、途中で抜けとかがあるかもしれません。
何か気づいたら、突っ込みお願いします!