Cygwin+Apache2+Subversion
タイトル通り、Cygwin+Apache2+Subversionの設定を行ってみたのでその記録。
パッケージ入れる
- これは素直にCygwinのsetup.exeを使って入れる。
- Subversionのレポジトリ作る
$ 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]`}