limitusus’s diary

主に技術のことを書きます

Cygwin+Apache2+Subversion

タイトル通り、Cygwin+Apache2+Subversionの設定を行ってみたのでその記録。

パッケージ入れる

  • これは素直にCygwinのsetup.exeを使って入れる。
  1. Subversionのレポジトリ作る
  • 今回は/var/svnをルートとして、/var/svn/reposをレポジトリとしてみた
$ mkdir /var/svn/repos
$ svnadmin create /var/svn/repos

httpd.confでモジュールをロード

  • /etc/apache2/httpd.confに2行追加する
  • ちゃんとファイルの存在は確認しておいた方がいいかも

LoadModule dav_svn_module lib/apache2/mod_dav_svn.so
LoadModule authz_svn_module lib/apache2/mod_authz_svn.so

Apache用設定ファイルを作る

  • /etc/apache2/httpd.confの末尾に書き足してもいいんだけど、最後を見たら
Include /etc/apache2/conf.d/*.conf

と書いてあったので、/etc/apache2/conf.d/47_mod_dav_svn.confを作成

# Subversion Settings
<Location /svn>
  DAV svn
  SVNParentPath "/var/svn"
  # Authorization Settings
  AuthType Basic
  AuthName "Subversion Repositories"
  Require valid-user
  AuthzSVNAccessFile /var/svn/conf/svnaccess
  AuthUserFile /var/svn/conf/.htpasswd
  <LimitExcept GET PROPFIND OPTIONS REPORT >
    Require valid-user
  </LimitExcept>
</Location>
  • 最初は認証部分なしで書いて実験したほうがいい

認証ファイルの作成

  • 上記confで指定したファイルをいじる(なければ作る)
 $ cat /var/svn/conf/svnaccess
# グループ設定
[groups]
admin = limit

# 管理グループはすべてにRW権限
[/]
@admin = rw

# reposは誰でもREAD可、管理グループにRW権限付加
[repos:/]
* = r
@admin = rw
 $ cat /var/svn/conf/.htpasswd
 limit:AAcvPvtmBfCNg
  • こんな感じ。(.htpasswdのパスワードMD5はダミー)
  • パスワードは
perl -e 'print crypt "PASSWORD", "SEED"'
  • で生成すればOK
  • SEEDは半角英数字2文字を指定する。
  • 上記サンプルのものはパスワード"PASSWORD"、SEEDを"AA"に設定したもの

トラブルシューティング

  • 以前にもハマったことがあるはずなんだが・・・
  • Googleで探せばすぐ解決する問題。

[Mon Sep 15 18:04:50 2008] [error] (28)No space left on device: Cannot create SSLMutex Configuration Failed
というエラーログが/var/log/apache2/error.logに出力された。

  • これはセマフォテーブルがいっぱいになっているだけなので、クリアすればよい
  • Apache2の実行ユーザを分けてないので(多分ダメ)、ちゃんと分けている場合にはipcs -sのあとにgrep apacheなど挟めばいいと思う
  • 検索したときにはipcrm sem $a[1]だったんだけどCygwinでは-sらしい
ipcs -s | perl -e 'while(<>){@a=split(/\s+/); print `ipcrm -s $a[1]`}