最初に、Subversionをセットアップします。
【EC2】 Subversion+Redmine環境の構築 (1/6)
【EC2】 Subversion+Redmine環境の構築 (2/6) : Subversionの設定 ←ここです
【EC2】 Subversion+Redmine環境の構築 (3/6) : SSLの設定
【EC2】 Subversion+Redmine環境の構築 (4/6) : Redmine の設定
【EC2】 Subversion+Redmine環境の構築 (5/6) : バックアップの設定
【EC2】 Subversion+Redmine環境の構築 (6/6) : 雑多な設定
Subversionリポジトリの作成
Subversionのリポジトリを作成します。サーバーにログインして、
bitnami@ip-10-132-10-247:~$ cd /opt/bitnami/ bitnami@ip-10-132-10-247:/opt/bitnami$ sudo mkdir repositories bitnami@ip-10-132-10-247:/opt/bitnami$ sudo chown -R daemon:daemon repositories/
として、リポジトリの格納場所を作り、
bitnami@ip-10-132-10-247:/opt/bitnami$ sudo -u daemon svnadmin create /opt/bitnami/repositories/myfirsttest bitnami@ip-10-132-10-247:/opt/bitnami$ ls -l repositories/ 合計 4 drwxr-xr-x 6 daemon daemon 4096 12月 6 08:50 myfirsttest bitnami@ip-10-132-10-247:/opt/bitnami$
として、テスト用のリポジトリ、myfirsttestを作りました。
なお、BitnamiのRedmineスタックはapacheの実行ユーザがdaemonになってます。リポジトリには、apache経由でアクセスすることを想定しているので、所有者はdaemonユーザにしました。
ちなみに、apacheの実行ユーザは、/opt/bitnami/apache2/conf/httpd.conf をみると、
User daemon Group daemon
と記載されています。もし、apacheの実行ユーザーを変えた場合やsvn://やsvn+ssh://でのアクセスなどを行う場合は、リポジトリに書き込み権限を与えるように所有者やアクセス権を設定してください。
このタイミングで、リポジトリに正常にアクセスできることを確認しておきます。
bitnami@ip-10-132-10-247:~$ cd bitnami@ip-10-132-10-247:~$ svn info file:///opt/bitnami/repositories/myfirsttest/ パス: myfirsttest URL: file:///opt/bitnami/repositories/myfirsttest リポジトリのルート: file:///opt/bitnami/repositories/myfirsttest リポジトリ UUID: 81701df6-3f36-11e2-93c5-b183278af287 リビジョン: 0 ノード種別: ディレクトリ 最終変更リビジョン: 0 最終変更日時: 2012-12-06 08:50:10 +0900 (木, 06 12月 2012) bitnami@ip-10-132-10-247:~$
ちなみに、現時点ではチェックアウトしても、リポジトリの書き込み権限がないのでコミットで失敗します。
(参考)
Error: svn attempt to write a readonly database, commit failed
httpからのアクセスの設定
次は、httpでアクセスできるように設定します。Subversionの場合は、WebDAV機能を使って実現しています。/opt/bitnami/apache2/conf/httpd.conf に
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so ・・・・・・ Include "/opt/bitnami/apache2/conf/extra/httpd-svn.conf"
を追加します。
Subversionに関する設定はまとめて、extra/httpd-svn.conf を新たに作成し、ここにまとめておきます。今回は次のようにしました。
# Subversion <Location /svn> DAV svn # enable view for repositories parent directories #SVNPath "/opt/bitnami/repositories" SVNParentpath "/opt/bitnami/repositories" SVNListParentPath On # read/write accesses force Basic auth AuthType Basic AuthName "Subversion repository" AuthUserFile /opt/bitnami/apache2/conf/.htpasswd.svn Require valid-user </Location>
アクセス時は読み書きともBasic認証を行うようにしています。また、プロジェクトごとに複数のリポジトリを扱うため、リポジトリを格納しているディレクトリを表示できるようにしました。
Basic認証で使用するパスワードファイルを作成します。
bitnami@ip-10-132-10-247:/opt/bitnami/apache2/conf$ sudo htpasswd -c ./.htpasswd.svn hogehoge New password: Re-type new password: Adding password for user hogehoge bitnami@ip-10-132-10-247:/opt/bitnami/apache2/conf$
apacheを再起動します。
bitnami@ip-10-132-10-247:/opt/bitnami/apache2/conf$ cd ../../ bitnami@ip-10-132-10-247:/opt/bitnami$ sudo ./ctlscript.sh restart apacheこれでブラウザからアクセス(http://サーバー名/svn)するとパスワードを聞かれるので入力すると、リポジトリが見えるはずです。
(参考:WebDAVの設定)
Ubuntu 12.04 Subversion 1.6+WebDAV
(参考:Basic認証について)
Apache + Subversion (svn) のBASIC認証
WebSVN Admin のインストール
これで、リポジトリにアクセスすることはできるようになりましたが、新規にリポジトリを作る場合は、サーバーにログインして、svnadmin コマンドを実行する必要があります。これだと面倒なので、リポジトリの作成もブラウザから行えるようにします。
実は手元の環境で使っている既存のSubversionサーバー(ReadyNasDuo)にはWebSVNアドオンというのが入っており、最新のリポジトリを見るだけでなく、ログなども見ることができ、さらにリポジトリの新規作成も出来ました。
で、これをインストールしたらリポジトリの作成ができると思っていたら、元々のWebSVNはリポジトリの作成機能というのはないんですね。びっくり。どうもReadyNasDuo(NASボックス)という性質に合わせて、変更されていたようです。
自分で作ろうかとも考えたのですが、代わりになるものはないかと調べたら、似たような機能を公開している方がいました。
WebSVN Administrator Subversionリポジトリ管理
バックアップなどいろいろと付加機能はついているのですが、とりあえずはリポジトリの作成機能だけあればよいので、これを使わせていただくことにします。
まずダウンロードします。
bitnami@ip-10-132-10-247:~$ wget 'http://sourceforge.jp/frs/redir.php?m=osdn&f=%2Fwebsvn-admin%2F50678%2Fwebsvn-admin-0.2b2.tar.gz' --2012-12-06 14:03:19-- http://sourceforge.jp/frs/redir.php?m=osdn&f=%2Fwebsvn-admin%2F50678%2Fwebsvn-admin-0.2b2.tar.gz sourceforge.jp (sourceforge.jp) をDNSに問いあわせています... 202.221.179.21 sourceforge.jp (sourceforge.jp)|202.221.179.21|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 302 Found 場所: http://osdn.dl.sourceforge.jp/websvn-admin/50678/websvn-admin-0.2b2.tar.gz [続く] --2012-12-06 14:03:19-- http://osdn.dl.sourceforge.jp/websvn-admin/50678/websvn-admin-0.2b2.tar.gz osdn.dl.sourceforge.jp (osdn.dl.sourceforge.jp) をDNSに問いあわせています... 202.221.179.23 osdn.dl.sourceforge.jp (osdn.dl.sourceforge.jp)|202.221.179.23|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 20442 (20K) [application/x-gzip] `redir.php?m=osdn&f=%2Fwebsvn-admin%2F50678%2Fwebsvn-admin-0.2b2.tar.gz' に保存中 100%[=============================================================================>] 20,442 33.8K/s 時間 0.6s 2012-12-06 14:03:20 (33.8 KB/s) - `redir.php?m=osdn&f=%2Fwebsvn-admin%2F50678%2Fwebsvn-admin-0.2b2.tar.gz' へ保存完了 [20442/20442] bitnami@ip-10-132-10-247:~$ mv redir.php?m=osdn&f=%2Fwebsvn-admin%2F50678%2Fwebsvn-admin-0.2b2.tar.gz websvn-admin-0.2b2.tar.gz bitnami@ip-10-132-10-247:~$
Webアクセス可能な場所に配置します。
bitnami@ip-10-132-10-247:~$ cd /opt/bitnami/apps/ bitnami@ip-10-132-10-247:/opt/bitnami/apps$ bitnami@ip-10-132-10-247:/opt/bitnami/apps$ sudo tar zxvf ~/websvn-admin-0.2b2.tar.gz websvn-admin-0.2/ websvn-admin-0.2/include/ websvn-admin-0.2/data/ websvn-admin-0.2/style.css websvn-admin-0.2/php.ini websvn-admin-0.2/logo-svn.png websvn-admin-0.2/index.php websvn-admin-0.2/icon-stop.png websvn-admin-0.2/icon-ok.png websvn-admin-0.2/icon-info.png websvn-admin-0.2/icon-box.png websvn-admin-0.2/include/.htaccess websvn-admin-0.2/include/config.php websvn-admin-0.2/include/auth.php websvn-admin-0.2/data/.htaccess bitnami@ip-10-132-10-247:/opt/bitnami/apps$ sudo chown -R bitnami:daemon websvn-admin-0.2/ bitnami@ip-10-132-10-247:/opt/bitnami/apps$
プログラム一式は、/opt/bitnami/appsに配置し、/opt/bitnami/apache2/htdocs からシンボリックリンクを張ります。
bitnami@ip-10-132-10-247:/opt/bitnami/apps$ bitnami@ip-10-132-10-247:/opt/bitnami/apps$ cd ../apache2/htdocs/ bitnami@ip-10-132-10-247:/opt/bitnami/apache2/htdocs$ ln -s ../../apps/websvn-admin-0.2/ websvnadmin bitnami@ip-10-132-10-247:/opt/bitnami/apache2/htdocs$
初期設定を行います。websvn-admin-0.2/include/config.php をviで開いて必要なパスを記入しておきます。
// $strSvnCmdPath = '/usr/bin/'; $strSvnCmdPath = '/opt/bitnami/subversion/bin/'; // ***** svn repositoy parent directory ***** // this string must end with '/'. // $strBaseDir = '/var/svn/'; $strBaseDir = '/opt/bitnami/repositories/'; // ***** repositoy backup/trash directory ***** // this string must end with '/'. // $strBackupDir = '/var/svn-backup/'; $strBackupDir = '/opt/bitnami/backup/repositories/';
バックアップディレクトリも指定していますが、WebSVN Adminからは利用しない予定です。
あと、アクセス時にパスワードファイルの書き換えが発生するので、dataディレクトリの権限を、775に変更しておきます。
bitnami@ip-10-132-10-247:/opt/bitnami/apps/websvn-admin-0.2$ chmod 775 data/
この状態で初回アクセスを行うと、初期ユーザーとパスワードが作成されて表示されます。
実は、この時初期ユーザー名として『user』が表示されるのですが、これが間違いで、ユーザー名『test』が正しいので注意してください。というわけで、testでログインします。
ログイン後、ユーザー名とパスワードを変更しておきます。
これで、ブラウザからリポジトリの作成ができるようになりました。一度リポジトリを作成してみてください。
なお、時刻表示を注意してみてみると日本時間になっていません。これは、phpのタイムゾーンが違っているためです。
/opt/bitnami/php/etc/php.ini を編集して
;date.timezone = "America/Los_Angeles" date.timezone = "Asia/Tokyo"
のようにタイムゾーンに東京に変更後、apacheを再起動すれば表示が正しくなります。
あと、リポジトリを作るだけでも良いのですが、個人的にはプロジェクトで使う場合は、いつもtrunk/branches/tagsを作っているので、同時にこれらも作成するように修正しました。
index.phpに対して、
exec($strSvnCmdPath."svnadmin create ".$strBaseDir.$strRepo." 2>&1", $arrStdout, $nResult); // 2012/12/4, added by Junichi MORI, start exec($strSvnCmdPath."svn mkdir file://".$strBaseDir.$strRepo."/branches -m 'Created branches' 2>&1", $arrStdout, $nResult); exec($strSvnCmdPath."svn mkdir file://".$strBaseDir.$strRepo."/tags -m 'Created tags' 2>&1", $arrStdout, $nResult); exec($strSvnCmdPath."svn mkdir file://".$strBaseDir.$strRepo."/trunk -m 'Created trunk' 2>&1", $arrStdout, $nResult); // 2012/12/4, added by Junichi MORI, end
のようにディレクトリを作成してコミットするだけです。
これでSubversionの設定は一通り終わりです。次は、SSHの設定を行います。