SubVersion Ubuntu

UbuntuサーバにSubversionを入れる

html

Ubuntuサーバが無事に動いたので、続いてSubversionを入れてみる。apache

こんな感じの環境を考える。svn

  • Apache経由でアクセス出來るようにする。
  • SSL+Digest認証に限定する。
  • リポジトリ毎のアクセス認証にも対応する。 

Subversionインストール

sudo apt-get install subversion libapache2-svn

 

はい終わり。ui

リポジトリの準備

まずはリポジトリ自體を置くディレクトリを做成。お好みで。spa

sudo mkdir /var/lib/svn

んで、とりあえず適當にリポジトリを做ってみる。rest

sudo svnadmin create /var/lib/svn/foo
sudo chown -R www-data /var/lib/svn/foo

後々Apache経由でアクセスするのでオーナーをApacheユーザ(www-data)に変えておく*1code

Apacheの設定

libapache2-svnを入れた時點で/etc/apache2/mods-available/dav_svn.confというファイルが出來てるんだけど、SSL限定にするにはdefault-sslのVirtualHostディレクティブの中に書く必要があるので、こいつは使わない。server

/etc/apache2/sites-available/default-sslに同様の內容を書き込む。htm

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
</VirtualHost>
    :
    : # other configuration
    :

  # 如下を追加
  <Location /svn>
    DAV svn
    SVNParentPath /var/lib/svn
    AuthType Digest
    AuthName "Subversion Repository"
    AuthUserFile /etc/apache2/.htdigest
    AuthzSVNAccessFile /etc/apache/dav_svn.authz
    Require valid-user
    Satisfy Any
  </Location>
</IfModule>

パスなどの設定內容はお好みに合わせて。blog

綺麗に管理したいなら外部ファイルにしてIncludeすればいい。ただ、sites-availableとかに置くとトラブルの元なので避けた方がいいかも。

続けてDigest認証用のファイルを做成する。

sudo htdigest -c /etc/apache2/.htdigest "Subversion Repository" username

realmが追加されている之外はhtpasswdと同じ。ファイルを做成するときだけ-cオプションを付ける。追加・変更時はつけない。

realmはAuthNameと合わせる必要があるので注意。

さらにSubversionのアクセス設定ファイルを做成する。

做るのはAuthzSVNAccessFileで指定したファイル。

[groups]
foo-dev = user-a, user-b

[/]
* = 

[foo:/]
@foo-dev = rw
user-c = rw
* = r

書き方はSubversionのマニュアルを読めってことで。

これを使うとリポジトリ(とパス)単位でユーザ毎に読み書きの制御ができる。

上の例だとfooリポジトリは誰でも見れるけど、コミットはuser-a, user-b, user-cしかできない。

Apache再起動

設定が終わったのでモジュールを有効にしてApache再起動する。

sudo a2enmod ssl
sudo a2enmod auth_digest
sudo a2enmod dav_svn
sudo a2ensite default-ssl
sudo /etc/init.d/apache2 restart

これでhttps経由でアクセス出來るようになったはず。

相關文章
相關標籤/搜索